home *** CD-ROM | disk | FTP | other *** search
/ Web Page Construction Kit 3.0 / Web Page Construction Kit 3.0.iso / pc / source / 3rdparty / cgi / libs / cgipm / html_06.tar < prev    next >
Tape Archive  |  1995-12-08  |  110.0 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: Tape Archive (archive/tar).

You can browse this item here: html_06.tar

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Tape Archive (archive/tar) magic Supported
20% dexvert Extreme Tracker (music/extremeTracker) fileSize Supported
100% file POSIX tar archive default
99% file POSIX tar archive, file HTML/Base.pm, mode 0000644, uid 0000313, gid 0000024, size 00000206216, seconds 05765725223, user greg, group users default
98% file data default
62% TrID TAR - Tape ARchive (POSIX) default
37% TrID TAR - Tape ARchive (file) default
100% siegfried x-fmt/265 Tape Archive Format default
100% lsar Tar default
100% gt2 TAR Archiv gefunden (Auflistung ist deaktiviert) default
100% disktype POSIX tar archive default
100% detectItEasy Archive: tar default
100% binwalkID POSIX tar archive, owner user name: "e.pm" default
100% xdgMime application/x-tar default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 48 54 4d 4c 2f 42 61 73 | 65 2e 70 6d 00 00 00 00 |HTML/Bas|e.pm....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| 00 00 00 00 30 30 30 30 | 36 34 34 00 30 30 30 30 |....0000|644.0000|
|00000070| 33 31 33 00 30 30 30 30 | 30 32 34 00 30 30 30 30 |313.0000|024.0000|
|00000080| 30 32 30 36 32 31 36 00 | 30 35 37 36 35 37 32 35 |0206216.|05765725|
|00000090| 32 32 33 00 30 30 31 33 | 32 31 30 00 30 00 00 00 |223.0013|210.0...|
|000000a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000100| 00 75 73 74 61 72 00 30 | 30 67 72 65 67 00 00 00 |.ustar.0|0greg...|
|00000110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000120| 00 00 00 00 00 00 00 00 | 00 75 73 65 72 73 00 00 |........|.users..|
|00000130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000140| 00 00 00 00 00 00 00 00 | 00 30 30 30 30 30 30 30 |........|.0000000|
|00000150| 00 30 30 30 30 30 30 30 | 00 00 00 00 00 00 00 00 |.0000000|........|
|00000160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000200| 23 21 2f 75 73 72 2f 6c | 6f 63 61 6c 2f 62 69 6e |#!/usr/l|ocal/bin|
|00000210| 2f 70 65 72 6c 0a 0a 72 | 65 71 75 69 72 65 20 35 |/perl..r|equire 5|
|00000220| 2e 30 30 31 3b 0a 0a 6d | 79 20 24 52 65 76 69 73 |.001;..m|y $Revis|
|00000230| 69 6f 6e 20 3d 20 27 24 | 52 65 76 69 73 69 6f 6e |ion = '$|Revision|
|00000240| 3a 20 30 2e 36 20 24 27 | 3b 0a 6d 79 20 24 56 65 |: 0.6 $'|;.my $Ve|
|00000250| 72 73 69 6f 6e 20 3d 20 | 24 52 65 76 69 73 69 6f |rsion = |$Revisio|
|00000260| 6e 3b 20 24 56 65 72 73 | 69 6f 6e 20 3d 7e 20 73 |n; $Vers|ion =~ s|
|00000270| 2f 2e 2a 28 5c 64 2b 5c | 2e 5c 64 2b 29 2e 2a 2f |/.*(\d+\|.\d+).*/|
|00000280| 24 31 2f 3b 0a 0a 75 73 | 65 20 73 74 72 69 63 74 |$1/;..us|e strict|
|00000290| 20 71 77 28 76 61 72 73 | 20 72 65 66 73 20 73 75 | qw(vars| refs su|
|000002a0| 62 73 29 3b 0a 0a 23 20 | 48 54 4d 4c 20 4d 6f 64 |bs);..# |HTML Mod|
|000002b0| 75 6c 65 20 66 6f 72 20 | 50 65 72 6c 20 35 0a 0a |ule for |Perl 5..|
|000002c0| 23 20 41 75 74 68 6f 72 | 3a 20 47 72 65 67 20 41 |# Author|: Greg A|
|000002d0| 6e 64 65 72 73 6f 6e 20 | 0a 0a 23 20 43 6f 6e 74 |nderson |..# Cont|
|000002e0| 61 63 74 20 69 6e 66 6f | 3a 0a 0a 23 20 65 6d 61 |act info|:..# ema|
|000002f0| 69 6c 3a 20 67 72 65 67 | 40 61 63 6f 61 74 65 73 |il: greg|@acoates|
|00000300| 2e 63 6f 6d 0a 0a 23 20 | 73 6e 61 69 6c 3a 20 32 |.com..# |snail: 2|
|00000310| 35 30 34 20 46 61 69 72 | 67 6c 65 6e 20 44 72 2c |504 Fair|glen Dr,|
|00000320| 20 53 61 6e 20 4a 6f 73 | 65 2c 20 43 41 20 20 39 | San Jos|e, CA 9|
|00000330| 35 31 32 35 0a 23 20 70 | 68 6f 6e 65 3a 20 28 34 |5125.# p|hone: (4|
|00000340| 30 38 29 20 32 36 37 2d | 33 33 30 36 0a 0a 23 20 |08) 267-|3306..# |
|00000350| 45 78 74 65 6e 73 69 76 | 65 20 61 6e 64 20 65 78 |Extensiv|e and ex|
|00000360| 63 65 6c 6c 65 6e 74 20 | 61 73 73 69 73 74 61 6e |cellent |assistan|
|00000370| 63 65 20 66 72 6f 6d 3a | 0a 0a 23 09 4a 6f 65 6c |ce from:|..#.Joel|
|00000380| 20 52 6f 73 69 2d 53 63 | 68 77 61 72 74 7a 0a 23 | Rosi-Sc|hwartz.#|
|00000390| 09 45 74 69 73 68 20 41 | 73 73 6f 63 69 61 74 65 |.Etish A|ssociate|
|000003a0| 73 0a 23 09 31 32 20 57 | 61 76 65 72 6c 65 79 20 |s.#.12 W|averley |
|000003b0| 57 61 79 2c 20 46 69 6e | 63 68 61 6d 70 73 74 65 |Way, Fin|champste|
|000003c0| 61 64 2c 20 57 6f 6b 69 | 6e 67 68 61 6d 2c 20 42 |ad, Woki|ngham, B|
|000003d0| 65 72 6b 73 68 69 72 65 | 20 52 47 34 30 20 34 59 |erkshire| RG40 4Y|
|000003e0| 44 2c 20 55 4b 0a 23 09 | 6a 6f 65 6c 40 65 74 69 |D, UK.#.|joel@eti|
|000003f0| 73 68 2e 63 6f 2e 75 6b | 0a 23 09 2b 34 34 20 31 |sh.co.uk|.#.+44 1|
|00000400| 37 33 34 20 37 33 30 32 | 36 30 20 28 70 68 6f 6e |734 7302|60 (phon|
|00000410| 65 29 0a 23 09 2b 34 34 | 20 31 37 33 34 20 37 33 |e).#.+44| 1734 73|
|00000420| 30 32 37 32 20 28 66 61 | 78 29 0a 0a 23 09 52 61 |0272 (fa|x)..#.Ra|
|00000430| 6e 64 79 20 54 65 72 62 | 75 73 68 20 28 72 61 6e |ndy Terb|ush (ran|
|00000440| 64 79 40 7a 79 7a 7a 79 | 76 61 2e 63 6f 6d 29 0a |dy@zyzzy|va.com).|
|00000450| 0a 23 20 54 68 69 73 20 | 63 6f 64 65 20 69 73 20 |.# This |code is |
|00000460| 43 6f 70 79 72 69 67 68 | 74 20 28 43 29 20 47 72 |Copyrigh|t (C) Gr|
|00000470| 65 67 20 41 6e 64 65 72 | 73 6f 6e 2c 20 6f 66 20 |eg Ander|son, of |
|00000480| 41 6e 64 65 72 73 6f 6e | 2d 43 6f 61 74 65 73 20 |Anderson|-Coates |
|00000490| 31 39 39 35 2e 20 0a 23 | 20 41 6c 6c 20 72 69 67 |1995. .#| All rig|
|000004a0| 68 74 73 20 72 65 73 65 | 72 76 65 64 2e 20 20 54 |hts rese|rved. T|
|000004b0| 68 69 73 20 70 72 6f 67 | 72 61 6d 20 69 73 20 66 |his prog|ram is f|
|000004c0| 72 65 65 20 73 6f 66 74 | 77 61 72 65 3b 20 79 6f |ree soft|ware; yo|
|000004d0| 75 20 63 61 6e 20 72 65 | 64 69 73 74 72 69 62 75 |u can re|distribu|
|000004e0| 74 65 20 69 74 20 0a 23 | 20 61 6e 64 2f 6f 72 20 |te it .#| and/or |
|000004f0| 6d 6f 64 69 66 79 20 69 | 74 20 75 6e 64 65 72 20 |modify i|t under |
|00000500| 74 68 65 20 73 61 6d 65 | 20 74 65 72 6d 73 20 61 |the same| terms a|
|00000510| 73 20 50 65 72 6c 20 69 | 74 73 65 6c 66 2e 0a 0a |s Perl i|tself...|
|00000520| 23 20 52 65 6c 65 61 73 | 65 3a 0a 0a 23 20 54 68 |# Releas|e:..# Th|
|00000530| 69 73 20 72 65 6c 65 61 | 73 65 20 69 73 20 70 72 |is relea|se is pr|
|00000540| 65 2d 41 6c 70 68 61 20 | 31 2c 20 70 72 65 73 65 |e-Alpha |1, prese|
|00000550| 6e 74 65 64 20 66 6f 72 | 20 74 68 65 20 65 76 61 |nted for| the eva|
|00000560| 6c 75 61 74 69 6f 6e 20 | 61 6e 64 0a 23 20 64 69 |luation |and.# di|
|00000570| 73 63 75 73 73 69 6f 6e | 20 6f 66 20 74 68 65 20 |scussion| of the |
|00000580| 50 65 72 6c 20 63 6f 6d | 6d 75 6e 69 74 79 2e 20 |Perl com|munity. |
|00000590| 20 0a 0a 23 20 50 6c 75 | 67 3a 0a 0a 23 20 41 6e | ..# Plu|g:..# An|
|000005a0| 64 65 72 73 6f 6e 2d 43 | 6f 61 74 65 73 20 69 73 |derson-C|oates is|
|000005b0| 20 61 20 63 6f 6e 73 75 | 6c 74 69 6e 67 20 66 69 | a consu|lting fi|
|000005c0| 72 6d 20 73 70 65 63 69 | 61 6c 69 7a 69 6e 67 20 |rm speci|alizing |
|000005d0| 69 6e 20 70 72 6f 66 65 | 73 73 69 6f 6e 61 6c 20 |in profe|ssional |
|000005e0| 49 6e 74 65 72 6e 65 74 | 0a 23 20 73 6f 66 74 77 |Internet|.# softw|
|000005f0| 61 72 65 20 61 6e 64 20 | 73 65 72 76 69 63 65 73 |are and |services|
|00000600| 2e 20 20 46 6f 72 20 6d | 6f 72 65 20 69 6e 66 6f |. For m|ore info|
|00000610| 20 63 61 6c 6c 20 28 34 | 30 38 29 20 32 36 37 2d | call (4|08) 267-|
|00000620| 33 33 30 36 20 6f 72 20 | 76 69 73 69 74 20 6f 75 |3306 or |visit ou|
|00000630| 72 0a 23 20 57 65 62 20 | 73 69 74 65 20 61 74 20 |r.# Web |site at |
|00000640| 68 74 74 70 3a 2f 2f 77 | 77 77 2e 61 63 6f 61 74 |http://w|ww.acoat|
|00000650| 65 73 2e 63 6f 6d 2f 0a | 0a 23 20 44 6f 63 75 6d |es.com/.|.# Docum|
|00000660| 65 6e 74 61 74 69 6f 6e | 3a 0a 0a 23 20 54 68 65 |entation|:..# The|
|00000670| 72 65 20 69 73 20 61 20 | 50 4f 44 20 66 6f 72 6d |re is a |POD form|
|00000680| 61 74 20 66 69 6c 65 20 | 61 76 61 69 6c 61 62 6c |at file |availabl|
|00000690| 65 20 64 65 73 63 72 69 | 62 69 6e 67 20 68 6f 77 |e descri|bing how|
|000006a0| 20 74 6f 20 75 73 65 20 | 74 68 69 73 20 6d 6f 64 | to use |this mod|
|000006b0| 75 6c 65 2c 20 62 75 74 | 20 0a 23 20 79 6f 75 20 |ule, but| .# you |
|000006c0| 63 6f 75 6c 64 20 70 72 | 6f 62 61 62 6c 79 20 66 |could pr|obably f|
|000006d0| 69 67 75 72 65 20 69 74 | 20 6f 75 74 20 62 79 20 |igure it| out by |
|000006e0| 72 65 61 64 69 6e 67 20 | 74 68 65 20 63 6f 6d 6d |reading |the comm|
|000006f0| 65 6e 74 73 2e 0a 0a 70 | 61 63 6b 61 67 65 20 48 |ents...p|ackage H|
|00000700| 54 4d 4c 3a 3a 42 61 73 | 65 3b 0a 7b 0a 20 20 75 |TML::Bas|e;.{. u|
|00000710| 73 65 20 43 61 72 70 3b | 0a 0a 20 20 23 20 48 54 |se Carp;|.. # HT|
|00000720| 4d 4c 20 67 6c 6f 62 61 | 6c 20 76 61 72 69 61 62 |ML globa|l variab|
|00000730| 6c 65 73 0a 0a 20 20 23 | 20 44 65 62 75 67 20 69 |les.. #| Debug i|
|00000740| 73 20 61 20 66 6c 61 67 | 20 28 30 20 6f 72 20 31 |s a flag| (0 or 1|
|00000750| 29 2e 20 20 49 66 20 31 | 2c 20 48 54 4d 4c 20 73 |). If 1|, HTML s|
|00000760| 70 69 74 73 20 6f 75 74 | 20 61 20 6c 6f 74 20 6f |pits out| a lot o|
|00000770| 66 20 64 65 62 75 67 67 | 69 6e 67 20 72 75 62 62 |f debugg|ing rubb|
|00000780| 69 73 68 20 0a 20 20 23 | 20 74 6f 20 53 54 44 45 |ish . #| to STDE|
|00000790| 52 52 2e 0a 0a 20 20 6d | 79 20 24 44 65 62 75 67 |RR... m|y $Debug|
|000007a0| 20 3d 20 2b 30 3b 20 20 | 20 20 20 20 20 20 20 20 | = +0; | |
|000007b0| 20 20 20 20 0a 0a 20 20 | 23 20 43 75 72 72 65 6e | .. |# Curren|
|000007c0| 74 4f 62 6a 65 63 74 20 | 69 73 20 61 20 72 65 66 |tObject |is a ref|
|000007d0| 65 72 65 6e 63 65 20 74 | 6f 20 74 68 65 20 6f 62 |erence t|o the ob|
|000007e0| 6a 65 63 74 20 77 68 69 | 63 68 20 69 73 20 74 6f |ject whi|ch is to|
|000007f0| 20 62 65 20 74 68 65 20 | 70 61 72 65 6e 74 20 0a | be the |parent .|
|00000800| 20 20 23 20 6f 66 20 74 | 68 65 20 6e 65 78 74 20 | # of t|he next |
|00000810| 6f 62 6a 65 63 74 20 63 | 72 65 61 74 65 64 2e 20 |object c|reated. |
|00000820| 20 54 68 65 20 72 65 66 | 65 72 65 6e 63 65 20 69 | The ref|erence i|
|00000830| 73 20 75 70 64 61 74 65 | 64 20 77 68 65 6e 65 76 |s update|d whenev|
|00000840| 65 72 20 61 20 6e 65 77 | 20 6f 62 6a 65 63 74 0a |er a new| object.|
|00000850| 20 20 23 20 69 73 20 63 | 72 65 61 74 65 64 2c 20 | # is c|reated, |
|00000860| 6f 72 20 6f 6e 65 20 69 | 73 20 65 6e 64 65 64 2e |or one i|s ended.|
|00000870| 0a 0a 20 20 6d 79 20 24 | 43 75 72 72 65 6e 74 4f |.. my $|CurrentO|
|00000880| 62 6a 65 63 74 3b 20 20 | 20 20 20 20 20 20 20 20 |bject; | |
|00000890| 20 0a 0a 20 20 23 20 54 | 6f 70 4f 62 6a 65 63 74 | .. # T|opObject|
|000008a0| 20 69 73 20 74 68 65 20 | 70 61 72 65 6e 74 20 6f | is the |parent o|
|000008b0| 66 20 61 6c 6c 20 6f 74 | 68 65 72 20 6f 62 6a 65 |f all ot|her obje|
|000008c0| 63 74 73 20 69 6e 20 74 | 68 65 20 6f 62 6a 65 63 |cts in t|he objec|
|000008d0| 74 20 74 72 65 65 2e 0a | 20 20 23 20 49 74 20 69 |t tree..| # It i|
|000008e0| 73 20 69 6e 69 74 69 61 | 6c 69 7a 65 64 20 74 6f |s initia|lized to|
|000008f0| 20 61 20 6e 65 77 20 22 | 62 6c 61 6e 6b 22 20 48 | a new "|blank" H|
|00000900| 54 4d 4c 20 6f 62 6a 65 | 63 74 2c 20 6a 75 73 74 |TML obje|ct, just|
|00000910| 20 74 6f 20 68 61 76 65 | 20 61 20 63 6f 6d 6d 6f | to have| a commo|
|00000920| 6e 0a 20 20 23 20 61 6e | 63 65 73 74 65 72 20 66 |n. # an|cester f|
|00000930| 6f 72 20 65 76 65 72 79 | 6f 6e 65 2e 0a 0a 20 20 |or every|one... |
|00000940| 6d 79 20 24 54 6f 70 4f | 62 6a 65 63 74 20 3d 20 |my $TopO|bject = |
|00000950| 6e 65 77 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a |new HTML|::Base::|
|00000960| 48 54 4d 4c 4f 62 6a 65 | 63 74 3b 0a 0a 20 20 23 |HTMLObje|ct;.. #|
|00000970| 20 24 46 69 6c 65 48 61 | 6e 64 6c 65 20 69 73 20 | $FileHa|ndle is |
|00000980| 61 20 66 69 6c 65 20 68 | 61 6e 64 6c 65 20 22 63 |a file h|andle "c|
|00000990| 6f 75 6e 74 65 72 22 20 | 74 68 61 74 20 74 68 65 |ounter" |that the|
|000009a0| 20 50 61 67 65 20 6f 62 | 6a 65 63 74 20 63 61 6e | Page ob|ject can|
|000009b0| 20 75 73 65 20 74 6f 0a | 20 20 23 20 67 65 6e 65 | use to.| # gene|
|000009c0| 72 61 74 65 20 75 6e 69 | 71 75 65 20 6f 75 74 70 |rate uni|que outp|
|000009d0| 75 74 20 66 69 6c 65 20 | 68 61 6e 64 6c 65 73 20 |ut file |handles |
|000009e0| 28 73 69 6d 70 6c 79 20 | 62 79 20 69 6e 63 72 65 |(simply |by incre|
|000009f0| 6d 65 6e 74 69 6e 67 20 | 69 74 29 2e 0a 0a 20 20 |menting |it)... |
|00000a00| 6d 79 20 24 46 69 6c 65 | 48 61 6e 64 6c 65 20 3d |my $File|Handle =|
|00000a10| 20 22 46 48 30 30 30 30 | 30 30 22 3b 0a 0a 20 20 | "FH0000|00";.. |
|00000a20| 23 20 25 4f 62 6a 65 63 | 74 43 61 63 68 65 20 69 |# %Objec|tCache i|
|00000a30| 73 20 61 20 68 61 73 68 | 20 6f 66 20 66 72 65 71 |s a hash| of freq|
|00000a40| 75 65 6e 74 6c 79 20 75 | 73 65 64 20 48 54 4d 4c |uently u|sed HTML|
|00000a50| 4f 62 6a 65 63 74 73 2e | 0a 20 20 23 20 48 54 4d |Objects.|. # HTM|
|00000a60| 4c 4f 62 6a 65 63 74 73 | 20 63 61 6e 20 62 65 20 |LObjects| can be |
|00000a70| 70 6c 61 63 65 64 20 69 | 6e 74 6f 20 74 68 65 20 |placed i|nto the |
|00000a80| 63 61 63 68 65 20 77 69 | 74 68 0a 20 20 23 0a 20 |cache wi|th. #. |
|00000a90| 20 23 09 09 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | #..HTML|::Base::|
|00000aa0| 63 61 63 68 65 5f 6f 62 | 6a 65 63 74 28 27 6f 62 |cache_ob|ject('ob|
|00000ab0| 6a 65 63 74 5f 6e 61 6d | 65 27 2c 20 24 6f 62 6a |ject_nam|e', $obj|
|00000ac0| 72 65 66 29 0a 20 20 23 | 0a 20 20 23 20 61 6e 64 |ref). #|. # and|
|00000ad0| 20 63 61 6e 20 62 65 20 | 75 73 65 64 20 69 6e 20 | can be |used in |
|00000ae0| 74 68 65 20 63 75 72 72 | 65 6e 74 20 50 61 67 65 |the curr|ent Page|
|00000af0| 20 62 79 20 63 61 6c 6c | 69 6e 67 3a 0a 20 20 23 | by call|ing:. #|
|00000b00| 0a 20 20 23 09 09 24 6f | 62 6a 72 65 66 20 3d 20 |. #..$o|bjref = |
|00000b10| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 75 73 65 5f |HTML::Ba|se::use_|
|00000b20| 6f 62 6a 65 63 74 28 27 | 6e 61 6d 65 27 29 3b 0a |object('|name');.|
|00000b30| 20 20 0a 20 20 6d 79 28 | 25 4f 62 6a 65 63 74 43 | . my(|%ObjectC|
|00000b40| 61 63 68 65 29 20 3d 20 | 28 29 3b 0a 0a 23 23 23 |ache) = |();..###|
|00000b50| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000b60| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000b70| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000b80| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000b90| 23 23 23 23 23 23 23 23 | 23 23 23 0a 0a 20 20 23 |########|###.. #|
|00000ba0| 20 48 54 4d 4c 20 70 75 | 62 6c 69 63 20 67 6c 6f | HTML pu|blic glo|
|00000bb0| 62 61 6c 20 66 75 6e 63 | 74 69 6f 6e 73 0a 0a 20 |bal func|tions.. |
|00000bc0| 20 23 20 48 54 4d 4c 3a | 3a 42 61 73 65 3a 3a 67 | # HTML:|:Base::g|
|00000bd0| 65 74 5f 63 75 72 72 65 | 6e 74 28 29 20 72 65 74 |et_curre|nt() ret|
|00000be0| 75 72 6e 73 20 61 20 72 | 65 66 65 72 65 6e 63 65 |urns a r|eference|
|00000bf0| 20 74 6f 20 74 68 65 20 | 63 75 72 72 65 6e 74 20 | to the |current |
|00000c00| 6f 62 6a 65 63 74 3b 0a | 0a 20 20 73 75 62 20 48 |object;.|. sub H|
|00000c10| 54 4d 4c 3a 3a 42 61 73 | 65 3a 3a 67 65 74 5f 63 |TML::Bas|e::get_c|
|00000c20| 75 72 72 65 6e 74 20 7b | 20 24 43 75 72 72 65 6e |urrent {| $Curren|
|00000c30| 74 4f 62 6a 65 63 74 3b | 20 7d 0a 0a 20 20 23 20 |tObject;| }.. # |
|00000c40| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 76 65 72 73 |HTML::Ba|se::vers|
|00000c50| 69 6f 6e 20 69 73 20 61 | 20 63 6f 6e 76 65 6e 69 |ion is a| conveni|
|00000c60| 65 6e 63 65 20 72 6f 75 | 74 69 6e 65 20 66 6f 72 |ence rou|tine for|
|00000c70| 20 64 69 73 70 6c 61 79 | 69 6e 67 20 74 68 65 20 | display|ing the |
|00000c80| 76 65 72 73 69 6f 6e 2e | 0a 0a 20 20 73 75 62 20 |version.|.. sub |
|00000c90| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 76 65 72 73 |HTML::Ba|se::vers|
|00000ca0| 69 6f 6e 20 7b 20 72 65 | 74 75 72 6e 20 24 56 65 |ion { re|turn $Ve|
|00000cb0| 72 73 69 6f 6e 3b 20 7d | 0a 0a 20 20 23 20 48 54 |rsion; }|.. # HT|
|00000cc0| 4d 4c 3a 3a 42 61 73 65 | 3a 3a 63 6f 70 79 5f 6f |ML::Base|::copy_o|
|00000cd0| 62 6a 65 63 74 20 74 61 | 6b 65 73 20 61 20 72 65 |bject ta|kes a re|
|00000ce0| 66 65 72 65 6e 63 65 20 | 74 6f 20 61 6e 20 65 78 |ference |to an ex|
|00000cf0| 69 73 74 69 6e 67 20 48 | 54 4d 4c 20 6f 62 6a 65 |isting H|TML obje|
|00000d00| 63 74 0a 20 20 23 20 61 | 6e 64 20 6d 61 6b 65 73 |ct. # a|nd makes|
|00000d10| 20 61 20 63 6f 70 79 20 | 6f 66 20 69 74 2c 20 69 | a copy |of it, i|
|00000d20| 6e 63 6c 75 64 69 6e 67 | 20 61 6c 6c 20 6f 66 20 |ncluding| all of |
|00000d30| 69 74 73 20 61 74 74 72 | 69 62 75 74 65 73 20 61 |its attr|ibutes a|
|00000d40| 6e 64 20 63 68 69 6c 64 | 72 65 6e 2e 0a 20 20 23 |nd child|ren.. #|
|00000d50| 20 54 68 65 20 63 6f 70 | 79 20 77 69 6c 6c 20 68 | The cop|y will h|
|00000d60| 61 76 65 20 6e 6f 20 70 | 61 72 65 6e 74 2c 20 61 |ave no p|arent, a|
|00000d70| 6e 64 20 77 69 6c 6c 20 | 6e 6f 74 20 62 65 20 6c |nd will |not be l|
|00000d80| 69 6e 6b 65 64 20 74 6f | 20 74 68 65 20 43 75 72 |inked to| the Cur|
|00000d90| 72 65 6e 74 4f 62 6a 65 | 63 74 2e 0a 20 20 23 20 |rentObje|ct.. # |
|00000da0| 41 20 72 65 66 65 72 65 | 6e 63 65 20 74 6f 20 74 |A refere|nce to t|
|00000db0| 68 65 20 63 6f 70 79 20 | 69 73 20 72 65 74 75 72 |he copy |is retur|
|00000dc0| 6e 65 64 2e 0a 0a 20 20 | 73 75 62 20 48 54 4d 4c |ned... |sub HTML|
|00000dd0| 3a 3a 42 61 73 65 3a 3a | 63 6f 70 79 5f 6f 62 6a |::Base::|copy_obj|
|00000de0| 65 63 74 20 7b 0a 20 20 | 20 20 48 54 4d 4c 3a 3a |ect {. | HTML::|
|00000df0| 42 61 73 65 3a 3a 5f 73 | 68 6f 77 5f 73 75 62 5f |Base::_s|how_sub_|
|00000e00| 65 6e 74 72 79 20 28 40 | 5f 29 3b 0a 20 20 20 20 |entry (@|_);. |
|00000e10| 6d 79 20 24 73 65 6c 66 | 20 3d 20 73 68 69 66 74 |my $self| = shift|
|00000e20| 3b 0a 20 20 20 20 6d 79 | 20 24 63 6f 70 79 3b 0a |;. my| $copy;.|
|00000e30| 20 20 20 20 69 66 20 28 | 24 73 65 6c 66 29 20 7b | if (|$self) {|
|00000e40| 0a 0a 20 20 20 20 20 20 | 69 66 20 28 24 44 65 62 |.. |if ($Deb|
|00000e50| 75 67 29 20 7b 20 0a 09 | 70 72 69 6e 74 20 53 54 |ug) { ..|print ST|
|00000e60| 44 45 52 52 20 22 5c 6e | 48 54 4d 4c 3a 3a 42 61 |DERR "\n|HTML::Ba|
|00000e70| 73 65 3a 3a 63 6f 70 79 | 5f 6f 62 6a 65 63 74 20 |se::copy|_object |
|00000e80| 63 6f 70 79 69 6e 67 20 | 24 73 65 6c 66 5c 6e 22 |copying |$self\n"|
|00000e90| 3b 0a 09 24 73 65 6c 66 | 2d 3e 73 68 6f 77 6d 65 |;..$self|->showme|
|00000ea0| 3b 0a 20 20 20 20 20 20 | 7d 0a 0a 20 20 20 20 20 |;. |}.. |
|00000eb0| 20 23 20 47 65 74 20 74 | 68 65 20 74 79 70 65 20 | # Get t|he type |
|00000ec0| 6f 66 20 74 68 65 20 6f | 62 6a 65 63 74 20 77 65 |of the o|bject we|
|00000ed0| 20 77 61 6e 74 20 74 6f | 20 63 6f 70 79 0a 20 20 | want to| copy. |
|00000ee0| 20 20 20 20 6d 79 20 24 | 74 79 70 65 20 3d 20 48 | my $|type = H|
|00000ef0| 54 4d 4c 3a 3a 42 61 73 | 65 3a 3a 6f 62 6a 65 63 |TML::Bas|e::objec|
|00000f00| 74 5f 74 79 70 65 20 28 | 24 73 65 6c 66 29 3b 0a |t_type (|$self);.|
|00000f10| 20 20 20 20 20 20 24 74 | 79 70 65 20 3d 20 22 48 | $t|ype = "H|
|00000f20| 54 4d 4c 3a 3a 42 61 73 | 65 3a 3a 22 20 2e 20 24 |TML::Bas|e::" . $|
|00000f30| 74 79 70 65 3b 0a 0a 20 | 20 20 20 20 20 23 20 42 |type;.. | # B|
|00000f40| 75 69 6c 64 20 74 68 65 | 20 22 6e 65 77 22 20 73 |uild the| "new" s|
|00000f50| 75 62 72 6f 75 74 69 6e | 65 20 6e 61 6d 65 20 66 |ubroutin|e name f|
|00000f60| 6f 72 20 74 68 69 73 20 | 74 79 70 65 20 6f 66 20 |or this |type of |
|00000f70| 6f 62 6a 65 63 74 2c 20 | 61 6e 64 20 67 65 74 20 |object, |and get |
|00000f80| 61 0a 20 20 20 20 20 20 | 23 20 72 65 66 65 72 65 |a. |# refere|
|00000f90| 6e 63 65 20 74 6f 20 74 | 68 65 20 63 6f 72 72 65 |nce to t|he corre|
|00000fa0| 63 74 20 73 75 62 2e 0a | 0a 20 20 20 20 20 20 6d |ct sub..|. m|
|00000fb0| 79 20 24 6e 65 77 73 75 | 62 72 65 66 20 3d 20 5c |y $newsu|bref = \|
|00000fc0| 26 7b 24 74 79 70 65 20 | 2e 20 27 3a 3a 6e 65 77 |&{$type |. '::new|
|00000fd0| 27 7d 3b 0a 0a 20 20 20 | 20 20 20 23 20 43 61 6c |'};.. | # Cal|
|00000fe0| 6c 20 74 68 65 20 22 6e | 65 77 22 20 73 75 62 2c |l the "n|ew" sub,|
|00000ff0| 20 61 6e 64 20 67 65 74 | 20 61 20 72 65 66 65 72 | and get| a refer|
|00001000| 65 6e 63 65 20 74 6f 20 | 74 68 65 20 6e 65 77 20 |ence to |the new |
|00001010| 6f 62 6a 65 63 74 2e 20 | 20 50 61 73 73 0a 20 20 |object. | Pass. |
|00001020| 20 20 20 20 23 20 74 68 | 65 20 61 74 74 72 69 62 | # th|e attrib|
|00001030| 75 74 65 20 22 4e 6f 50 | 61 72 65 6e 74 22 20 73 |ute "NoP|arent" s|
|00001040| 6f 20 74 68 61 74 20 74 | 68 69 73 20 6e 65 77 20 |o that t|his new |
|00001050| 6f 62 6a 65 63 74 20 77 | 69 6c 6c 20 6e 6f 74 20 |object w|ill not |
|00001060| 62 65 20 6c 69 6e 6b 65 | 64 0a 20 20 20 20 20 20 |be linke|d. |
|00001070| 23 20 74 6f 20 74 68 65 | 20 43 75 72 72 65 6e 74 |# to the| Current|
|00001080| 4f 62 6a 65 63 74 0a 0a | 20 20 20 20 20 20 24 63 |Object..| $c|
|00001090| 6f 70 79 20 3d 20 26 7b | 24 6e 65 77 73 75 62 72 |opy = &{|$newsubr|
|000010a0| 65 66 7d 20 28 24 74 79 | 70 65 2c 20 27 43 6f 70 |ef} ($ty|pe, 'Cop|
|000010b0| 79 27 2c 20 27 31 27 2c | 20 27 4e 6f 50 61 72 65 |y', '1',| 'NoPare|
|000010c0| 6e 74 27 2c 20 27 31 27 | 29 3b 0a 0a 20 20 20 20 |nt', '1'|);.. |
|000010d0| 20 20 23 20 43 6f 70 79 | 20 74 68 65 20 48 54 4d | # Copy| the HTM|
|000010e0| 4c 20 74 61 67 20 66 72 | 6f 6d 20 74 68 65 20 73 |L tag fr|om the s|
|000010f0| 6f 75 72 63 65 20 74 6f | 20 74 68 65 20 63 6f 70 |ource to| the cop|
|00001100| 79 2e 20 20 54 68 69 73 | 20 69 73 20 6a 75 73 74 |y. This| is just|
|00001110| 20 69 6e 20 63 61 73 65 | 0a 20 20 20 20 20 20 23 | in case|. #|
|00001120| 20 74 68 65 20 74 61 67 | 20 77 61 73 20 64 65 70 | the tag| was dep|
|00001130| 65 6e 64 61 6e 74 20 75 | 70 6f 6e 20 61 6e 79 20 |endant u|pon any |
|00001140| 70 61 72 61 6d 65 74 65 | 72 73 20 70 61 73 73 65 |paramete|rs passe|
|00001150| 64 20 74 6f 20 74 68 65 | 20 6f 72 69 67 69 6e 61 |d to the| origina|
|00001160| 6c 20 0a 20 20 20 20 20 | 20 23 20 63 6f 6e 73 74 |l . | # const|
|00001170| 72 75 63 74 6f 72 20 28 | 73 75 63 68 20 61 73 20 |ructor (|such as |
|00001180| 69 6e 20 74 68 65 20 63 | 61 73 65 20 6f 66 20 74 |in the c|ase of t|
|00001190| 68 65 20 48 65 61 64 65 | 72 20 6f 62 6a 65 63 74 |he Heade|r object|
|000011a0| 29 2e 0a 0a 20 20 20 20 | 20 20 24 63 6f 70 79 2d |)... | $copy-|
|000011b0| 3e 7b 27 74 61 67 27 7d | 20 3d 20 24 73 65 6c 66 |>{'tag'}| = $self|
|000011c0| 2d 3e 7b 27 74 61 67 27 | 7d 3b 0a 0a 20 20 20 20 |->{'tag'|};.. |
|000011d0| 20 20 23 20 43 6f 70 79 | 20 74 68 65 20 73 6f 75 | # Copy| the sou|
|000011e0| 72 63 65 20 6f 62 6a 65 | 63 74 27 73 20 41 74 74 |rce obje|ct's Att|
|000011f0| 72 69 62 75 74 65 73 20 | 68 61 73 68 20 74 6f 20 |ributes |hash to |
|00001200| 74 68 65 20 6e 65 77 20 | 6f 62 6a 65 63 74 0a 20 |the new |object. |
|00001210| 20 20 20 20 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | HTM|L::Base:|
|00001220| 3a 5f 63 6f 70 79 5f 61 | 74 74 72 69 62 75 74 65 |:_copy_a|ttribute|
|00001230| 73 20 28 24 73 65 6c 66 | 2c 20 24 63 6f 70 79 29 |s ($self|, $copy)|
|00001240| 3b 0a 0a 20 20 20 20 20 | 20 23 20 43 72 65 61 74 |;.. | # Creat|
|00001250| 65 20 61 6e 20 61 72 72 | 61 79 20 66 6f 72 20 74 |e an arr|ay for t|
|00001260| 68 65 20 63 6f 70 79 27 | 73 20 70 6f 74 65 6e 74 |he copy'|s potent|
|00001270| 69 61 6c 20 63 68 69 6c | 64 72 65 6e 20 6f 62 6a |ial chil|dren obj|
|00001280| 65 63 74 73 2e 0a 0a 20 | 20 20 20 20 20 24 63 6f |ects... | $co|
|00001290| 70 79 2d 3e 7b 27 43 68 | 69 6c 64 72 65 6e 27 7d |py->{'Ch|ildren'}|
|000012a0| 20 3d 20 5b 5d 3b 0a 0a | 20 20 20 20 20 20 23 20 | = [];..| # |
|000012b0| 49 74 65 72 61 74 65 20 | 74 68 72 6f 75 67 68 20 |Iterate |through |
|000012c0| 61 6c 6c 20 6f 66 20 74 | 68 65 20 63 68 69 6c 64 |all of t|he child|
|000012d0| 72 65 6e 20 6f 66 20 74 | 68 65 20 73 6f 75 72 63 |ren of t|he sourc|
|000012e0| 65 20 6f 62 6a 65 63 74 | 2c 20 61 6e 64 20 63 6f |e object|, and co|
|000012f0| 70 79 0a 20 20 20 20 20 | 20 23 20 65 61 63 68 2e |py. | # each.|
|00001300| 0a 0a 20 20 20 20 20 20 | 6d 79 20 24 63 68 69 6c |.. |my $chil|
|00001310| 64 3b 0a 20 20 20 20 20 | 20 6d 79 20 24 63 68 69 |d;. | my $chi|
|00001320| 6c 64 63 6f 70 79 3b 0a | 20 20 20 20 20 20 66 6f |ldcopy;.| fo|
|00001330| 72 65 61 63 68 20 24 63 | 68 69 6c 64 20 28 40 7b |reach $c|hild (@{|
|00001340| 24 73 65 6c 66 2d 3e 7b | 27 43 68 69 6c 64 72 65 |$self->{|'Childre|
|00001350| 6e 27 7d 7d 29 20 7b 0a | 0a 09 23 20 4d 61 6b 65 |n'}}) {.|..# Make|
|00001360| 20 6f 66 20 63 6f 70 79 | 20 6f 66 20 74 68 69 73 | of copy| of this|
|00001370| 20 63 68 69 6c 64 20 61 | 6e 64 20 67 65 74 20 61 | child a|nd get a|
|00001380| 20 72 65 66 65 72 65 6e | 63 65 20 74 6f 20 74 68 | referen|ce to th|
|00001390| 65 20 63 6f 70 79 0a 09 | 24 63 68 69 6c 64 63 6f |e copy..|$childco|
|000013a0| 70 79 20 3d 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a |py = HTM|L::Base:|
|000013b0| 3a 63 6f 70 79 5f 6f 62 | 6a 65 63 74 20 28 24 63 |:copy_ob|ject ($c|
|000013c0| 68 69 6c 64 29 3b 0a 0a | 09 23 20 4c 69 6e 6b 20 |hild);..|.# Link |
|000013d0| 74 68 65 20 6e 65 77 20 | 63 68 69 6c 64 20 63 6f |the new |child co|
|000013e0| 70 79 20 74 6f 20 74 68 | 65 20 6e 65 77 20 70 61 |py to th|e new pa|
|000013f0| 72 65 6e 74 20 63 6f 70 | 79 0a 09 75 6e 64 65 66 |rent cop|y..undef|
|00001400| 20 24 63 68 69 6c 64 63 | 6f 70 79 2d 3e 7b 41 74 | $childc|opy->{At|
|00001410| 74 72 69 62 75 74 65 73 | 7d 2d 3e 7b 4e 6f 50 61 |tributes|}->{NoPa|
|00001420| 72 65 6e 74 7d 3b 0a 09 | 48 54 4d 4c 3a 3a 42 61 |rent};..|HTML::Ba|
|00001430| 73 65 3a 3a 6c 69 6e 6b | 5f 74 6f 5f 70 61 72 65 |se::link|_to_pare|
|00001440| 6e 74 20 28 24 63 68 69 | 6c 64 63 6f 70 79 2c 20 |nt ($chi|ldcopy, |
|00001450| 24 63 6f 70 79 29 3b 0a | 0a 20 20 20 20 20 20 7d |$copy);.|. }|
|00001460| 0a 0a 20 20 20 20 20 20 | 23 20 52 65 74 75 72 6e |.. |# Return|
|00001470| 20 72 65 66 65 72 65 6e | 63 65 20 74 6f 20 6e 65 | referen|ce to ne|
|00001480| 77 20 63 6f 70 79 20 6f | 66 20 6f 62 6a 65 63 74 |w copy o|f object|
|00001490| 0a 20 20 20 20 20 20 24 | 63 6f 70 79 3b 0a 20 20 |. $|copy;. |
|000014a0| 20 20 7d 0a 20 20 7d 0a | 0a 20 20 23 20 48 54 4d | }. }.|. # HTM|
|000014b0| 4c 3a 3a 42 61 73 65 3a | 3a 63 61 63 68 65 5f 6f |L::Base:|:cache_o|
|000014c0| 62 6a 65 63 74 20 70 75 | 73 68 65 73 20 61 20 63 |bject pu|shes a c|
|000014d0| 6f 70 79 20 6f 66 20 61 | 6e 20 48 54 4d 4c 4f 62 |opy of a|n HTMLOb|
|000014e0| 6a 65 63 74 20 6f 6e 74 | 6f 20 25 4f 62 6a 65 63 |ject ont|o %Objec|
|000014f0| 74 43 61 63 68 65 0a 0a | 20 20 73 75 62 20 48 54 |tCache..| sub HT|
|00001500| 4d 4c 3a 3a 42 61 73 65 | 3a 3a 63 61 63 68 65 5f |ML::Base|::cache_|
|00001510| 6f 62 6a 65 63 74 20 7b | 0a 20 20 20 20 48 54 4d |object {|. HTM|
|00001520| 4c 3a 3a 42 61 73 65 3a | 3a 5f 73 68 6f 77 5f 73 |L::Base:|:_show_s|
|00001530| 75 62 5f 65 6e 74 72 79 | 20 28 40 5f 29 3b 0a 20 |ub_entry| (@_);. |
|00001540| 20 20 20 6d 79 28 24 6e | 61 6d 65 2c 20 24 6f 62 | my($n|ame, $ob|
|00001550| 6a 72 65 66 29 20 3d 20 | 40 5f 3b 0a 20 20 20 20 |jref) = |@_;. |
|00001560| 69 66 20 28 24 6e 61 6d | 65 2c 20 24 6f 62 6a 72 |if ($nam|e, $objr|
|00001570| 65 66 29 20 7b 0a 20 20 | 20 20 20 20 23 20 4d 61 |ef) {. | # Ma|
|00001580| 6b 65 20 61 20 63 6f 70 | 79 20 6f 66 20 74 68 65 |ke a cop|y of the|
|00001590| 20 67 69 76 65 6e 20 6f | 62 6a 65 63 74 0a 20 20 | given o|bject. |
|000015a0| 20 20 20 20 24 4f 62 6a | 65 63 74 43 61 63 68 65 | $Obj|ectCache|
|000015b0| 7b 24 6e 61 6d 65 7d 20 | 3d 20 48 54 4d 4c 3a 3a |{$name} |= HTML::|
|000015c0| 42 61 73 65 3a 3a 63 6f | 70 79 5f 6f 62 6a 65 63 |Base::co|py_objec|
|000015d0| 74 28 24 6f 62 6a 72 65 | 66 29 3b 0a 20 20 20 20 |t($objre|f);. |
|000015e0| 7d 0a 20 20 7d 0a 0a 20 | 20 23 20 48 54 4d 4c 3a |}. }.. | # HTML:|
|000015f0| 3a 42 61 73 65 3a 3a 75 | 73 65 5f 6f 62 6a 65 63 |:Base::u|se_objec|
|00001600| 74 20 63 6f 70 69 65 73 | 20 61 6e 20 48 54 4d 4c |t copies| an HTML|
|00001610| 4f 62 6a 65 63 74 20 66 | 72 6f 6d 20 25 4f 62 6a |Object f|rom %Obj|
|00001620| 65 63 74 43 61 63 68 65 | 20 69 6e 74 6f 20 74 68 |ectCache| into th|
|00001630| 65 0a 20 20 23 20 63 75 | 72 72 65 6e 74 20 6f 62 |e. # cu|rrent ob|
|00001640| 6a 65 63 74 20 74 72 65 | 65 2e 0a 0a 20 20 73 75 |ject tre|e... su|
|00001650| 62 20 48 54 4d 4c 3a 3a | 42 61 73 65 3a 3a 75 73 |b HTML::|Base::us|
|00001660| 65 5f 6f 62 6a 65 63 74 | 20 7b 0a 20 20 20 20 48 |e_object| {. H|
|00001670| 54 4d 4c 3a 3a 42 61 73 | 65 3a 3a 5f 73 68 6f 77 |TML::Bas|e::_show|
|00001680| 5f 73 75 62 5f 65 6e 74 | 72 79 20 28 40 5f 29 3b |_sub_ent|ry (@_);|
|00001690| 0a 20 20 20 20 6d 79 20 | 24 6e 61 6d 65 20 3d 20 |. my |$name = |
|000016a0| 73 68 69 66 74 3b 0a 20 | 20 20 20 6d 79 20 24 73 |shift;. | my $s|
|000016b0| 65 6c 66 20 3d 20 48 54 | 4d 4c 3a 3a 42 61 73 65 |elf = HT|ML::Base|
|000016c0| 3a 3a 63 6f 70 79 5f 6f | 62 6a 65 63 74 28 24 4f |::copy_o|bject($O|
|000016d0| 62 6a 65 63 74 43 61 63 | 68 65 7b 24 6e 61 6d 65 |bjectCac|he{$name|
|000016e0| 7d 29 3b 0a 20 20 20 20 | 69 66 20 28 24 73 65 6c |});. |if ($sel|
|000016f0| 66 29 20 7b 0a 20 20 20 | 20 20 20 69 66 20 28 24 |f) {. | if ($|
|00001700| 43 75 72 72 65 6e 74 4f | 62 6a 65 63 74 29 20 7b |CurrentO|bject) {|
|00001710| 0a 20 20 20 20 20 20 20 | 20 24 73 65 6c 66 2d 3e |. | $self->|
|00001720| 7b 27 50 61 72 65 6e 74 | 27 7d 20 3d 20 24 43 75 |{'Parent|'} = $Cu|
|00001730| 72 72 65 6e 74 4f 62 6a | 65 63 74 3b 0a 20 20 20 |rrentObj|ect;. |
|00001740| 20 20 20 20 20 70 75 73 | 68 20 40 7b 24 43 75 72 | pus|h @{$Cur|
|00001750| 72 65 6e 74 4f 62 6a 65 | 63 74 2d 3e 7b 27 43 68 |rentObje|ct->{'Ch|
|00001760| 69 6c 64 72 65 6e 27 7d | 7d 20 2c 20 24 73 65 6c |ildren'}|} , $sel|
|00001770| 66 3b 0a 20 20 20 20 20 | 20 7d 0a 20 20 20 20 20 |f;. | }. |
|00001780| 20 24 43 75 72 72 65 6e | 74 4f 62 6a 65 63 74 20 | $Curren|tObject |
|00001790| 3d 20 24 73 65 6c 66 3b | 0a 20 20 20 20 7d 0a 20 |= $self;|. }. |
|000017a0| 20 7d 0a 0a 20 20 23 20 | 48 54 4d 4c 3a 3a 42 61 | }.. # |HTML::Ba|
|000017b0| 73 65 3a 3a 68 74 6d 6c | 5f 64 65 62 75 67 20 69 |se::html|_debug i|
|000017c0| 73 20 61 20 63 6f 6e 76 | 65 6e 69 65 6e 63 65 20 |s a conv|enience |
|000017d0| 72 6f 75 74 69 6e 65 20 | 66 6f 72 20 73 65 74 74 |routine |for sett|
|000017e0| 69 6e 67 20 0a 20 20 23 | 20 20 20 24 48 54 4d 4c |ing . #| $HTML|
|000017f0| 3a 3a 42 61 73 65 3a 3a | 44 65 62 75 67 20 74 6f |::Base::|Debug to|
|00001800| 20 31 2e 0a 0a 20 20 73 | 75 62 20 48 54 4d 4c 3a | 1... s|ub HTML:|
|00001810| 3a 42 61 73 65 3a 3a 68 | 74 6d 6c 5f 64 65 62 75 |:Base::h|tml_debu|
|00001820| 67 20 7b 20 24 44 65 62 | 75 67 20 3d 20 2b 31 3b |g { $Deb|ug = +1;|
|00001830| 20 7d 0a 0a 20 20 23 20 | 48 54 4d 4c 3a 3a 42 61 | }.. # |HTML::Ba|
|00001840| 73 65 3a 3a 65 6e 64 5f | 6f 62 6a 65 63 74 20 22 |se::end_|object "|
|00001850| 63 6c 6f 73 65 73 22 20 | 61 6e 20 6f 62 6a 65 63 |closes" |an objec|
|00001860| 74 20 73 69 6d 70 6c 79 | 20 62 79 20 70 6f 69 6e |t simply| by poin|
|00001870| 74 69 6e 67 20 74 68 65 | 20 0a 20 20 23 20 24 43 |ting the| . # $C|
|00001880| 75 72 72 65 6e 74 4f 62 | 6a 65 63 74 20 74 6f 20 |urrentOb|ject to |
|00001890| 74 68 65 20 70 61 72 65 | 6e 74 20 6f 66 20 74 68 |the pare|nt of th|
|000018a0| 65 20 67 69 76 65 6e 20 | 6f 62 6a 65 63 74 20 28 |e given |object (|
|000018b0| 6f 72 20 74 68 65 20 70 | 61 72 65 6e 74 20 6f 66 |or the p|arent of|
|000018c0| 20 0a 20 20 23 20 24 43 | 75 72 72 65 6e 74 4f 62 | . # $C|urrentOb|
|000018d0| 6a 65 63 74 20 69 66 20 | 6e 6f 20 6f 62 6a 65 63 |ject if |no objec|
|000018e0| 74 20 77 61 73 20 73 70 | 65 63 69 66 69 65 64 29 |t was sp|ecified)|
|000018f0| 2e 0a 0a 20 20 73 75 62 | 20 48 54 4d 4c 3a 3a 42 |... sub| HTML::B|
|00001900| 61 73 65 3a 3a 65 6e 64 | 5f 6f 62 6a 65 63 74 20 |ase::end|_object |
|00001910| 7b 0a 20 20 20 20 48 54 | 4d 4c 3a 3a 42 61 73 65 |{. HT|ML::Base|
|00001920| 3a 3a 5f 73 68 6f 77 5f | 73 75 62 5f 65 6e 74 72 |::_show_|sub_entr|
|00001930| 79 20 28 40 5f 29 3b 0a | 20 20 20 20 6d 79 20 24 |y (@_);.| my $|
|00001940| 73 65 6c 66 20 3d 20 73 | 68 69 66 74 3b 20 0a 20 |self = s|hift; . |
|00001950| 20 20 20 69 66 20 28 24 | 73 65 6c 66 29 20 7b 0a | if ($|self) {.|
|00001960| 20 20 20 20 20 20 69 66 | 20 28 24 44 65 62 75 67 | if| ($Debug|
|00001970| 29 20 7b 0a 20 20 20 20 | 20 20 20 20 70 72 69 6e |) {. | prin|
|00001980| 74 20 28 53 54 44 45 52 | 52 20 22 5c 6e 48 54 4d |t (STDER|R "\nHTM|
|00001990| 4c 3a 3a 42 61 73 65 3a | 3a 65 6e 64 6f 62 6a 65 |L::Base:|:endobje|
|000019a0| 63 74 20 3a 20 73 65 6c | 66 20 3d 20 24 73 65 6c |ct : sel|f = $sel|
|000019b0| 66 2c 5c 6e 20 20 4d 79 | 20 70 61 72 65 6e 74 20 |f,\n My| parent |
|000019c0| 3d 20 24 73 65 6c 66 2d | 3e 7b 50 61 72 65 6e 74 |= $self-|>{Parent|
|000019d0| 7d 5c 6e 22 29 3b 0a 20 | 20 20 20 20 20 20 20 70 |}\n");. | p|
|000019e0| 72 69 6e 74 20 28 53 54 | 44 45 52 52 20 22 20 20 |rint (ST|DERR " |
|000019f0| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 43 75 72 72 |HTML::Ba|se::Curr|
|00001a00| 65 6e 74 4f 62 6a 65 63 | 74 20 3d 20 24 43 75 72 |entObjec|t = $Cur|
|00001a10| 72 65 6e 74 4f 62 6a 65 | 63 74 2c 5c 6e 22 29 3b |rentObje|ct,\n");|
|00001a20| 0a 20 20 20 20 20 20 7d | 0a 20 20 20 20 20 20 69 |. }|. i|
|00001a30| 66 20 28 24 73 65 6c 66 | 2d 3e 7b 50 61 72 65 6e |f ($self|->{Paren|
|00001a40| 74 7d 29 20 7b 20 24 43 | 75 72 72 65 6e 74 4f 62 |t}) { $C|urrentOb|
|00001a50| 6a 65 63 74 20 3d 20 24 | 73 65 6c 66 2d 3e 7b 50 |ject = $|self->{P|
|00001a60| 61 72 65 6e 74 7d 20 7d | 0a 20 20 20 20 7d 0a 20 |arent} }|. }. |
|00001a70| 20 20 20 65 6c 73 65 20 | 7b 0a 20 20 20 20 20 20 | else |{. |
|00001a80| 24 43 75 72 72 65 6e 74 | 4f 62 6a 65 63 74 20 3d |$Current|Object =|
|00001a90| 20 24 43 75 72 72 65 6e | 74 4f 62 6a 65 63 74 2d | $Curren|tObject-|
|00001aa0| 3e 7b 27 50 61 72 65 6e | 74 27 7d 3b 0a 20 20 20 |>{'Paren|t'};. |
|00001ab0| 20 7d 0a 20 20 20 20 69 | 66 20 28 24 44 65 62 75 | }. i|f ($Debu|
|00001ac0| 67 29 20 7b 70 72 69 6e | 74 20 28 53 54 44 45 52 |g) {prin|t (STDER|
|00001ad0| 52 20 22 20 20 4e 65 77 | 20 48 54 4d 4c 3a 3a 42 |R " New| HTML::B|
|00001ae0| 61 73 65 3a 3a 43 75 72 | 72 65 6e 74 4f 62 6a 65 |ase::Cur|rentObje|
|00001af0| 63 74 20 3d 20 24 43 75 | 72 72 65 6e 74 4f 62 6a |ct = $Cu|rrentObj|
|00001b00| 65 63 74 2c 5c 6e 22 29 | 3b 7d 0a 20 20 7d 20 23 |ect,\n")|;}. } #|
|00001b10| 20 65 6e 64 20 73 75 62 | 20 65 6e 64 6f 62 6a 65 | end sub| endobje|
|00001b20| 63 74 0a 0a 20 20 23 20 | 48 54 4d 4c 3a 3a 42 61 |ct.. # |HTML::Ba|
|00001b30| 73 65 3a 3a 65 6e 64 5f | 61 6c 6c 5f 6f 62 6a 65 |se::end_|all_obje|
|00001b40| 63 74 73 20 22 63 6c 6f | 73 65 73 22 20 61 6c 6c |cts "clo|ses" all|
|00001b50| 20 6f 70 65 6e 20 6f 62 | 6a 65 63 74 73 2c 20 73 | open ob|jects, s|
|00001b60| 69 6d 70 6c 79 20 62 79 | 20 63 68 61 6e 67 69 6e |imply by| changin|
|00001b70| 67 20 0a 20 20 23 20 74 | 68 65 20 24 43 75 72 72 |g . # t|he $Curr|
|00001b80| 65 6e 74 4f 62 6a 65 63 | 74 20 72 65 66 65 72 65 |entObjec|t refere|
|00001b90| 6e 63 65 20 74 6f 20 74 | 68 61 74 20 6f 66 20 74 |nce to t|hat of t|
|00001ba0| 68 65 20 75 70 70 65 72 | 2d 6d 6f 73 74 20 6f 62 |he upper|-most ob|
|00001bb0| 6a 65 63 74 2e 20 20 54 | 68 69 73 20 69 73 0a 20 |ject. T|his is. |
|00001bc0| 20 23 20 61 20 63 6f 6e | 76 65 6e 69 65 6e 74 20 | # a con|venient |
|00001bd0| 77 61 79 20 74 6f 20 67 | 65 74 20 6f 75 74 20 6f |way to g|et out o|
|00001be0| 66 20 61 20 64 65 65 70 | 6c 79 20 6e 65 73 74 65 |f a deep|ly neste|
|00001bf0| 64 20 73 65 74 20 6f 66 | 20 48 54 4d 4c 20 63 6f |d set of| HTML co|
|00001c00| 6d 6d 61 6e 64 73 0a 20 | 20 23 20 71 75 69 63 6b |mmands. | # quick|
|00001c10| 6c 79 20 61 6e 64 20 73 | 74 61 72 74 20 66 72 65 |ly and s|tart fre|
|00001c20| 73 68 2e 0a 0a 20 20 73 | 75 62 20 48 54 4d 4c 3a |sh... s|ub HTML:|
|00001c30| 3a 42 61 73 65 3a 3a 65 | 6e 64 5f 61 6c 6c 5f 6f |:Base::e|nd_all_o|
|00001c40| 62 6a 65 63 74 73 20 7b | 0a 20 20 20 20 48 54 4d |bjects {|. HTM|
|00001c50| 4c 3a 3a 42 61 73 65 3a | 3a 5f 73 68 6f 77 5f 73 |L::Base:|:_show_s|
|00001c60| 75 62 5f 65 6e 74 72 79 | 20 28 40 5f 29 3b 0a 20 |ub_entry| (@_);. |
|00001c70| 20 20 20 24 43 75 72 72 | 65 6e 74 4f 62 6a 65 63 | $Curr|entObjec|
|00001c80| 74 20 3d 20 24 54 6f 70 | 4f 62 6a 65 63 74 3b 0a |t = $Top|Object;.|
|00001c90| 20 20 7d 20 23 20 65 6e | 64 20 73 75 62 20 65 6e | } # en|d sub en|
|00001ca0| 64 5f 61 6c 6c 5f 6f 62 | 6a 65 63 74 73 0a 0a 20 |d_all_ob|jects.. |
|00001cb0| 20 23 20 72 65 61 6c 69 | 7a 65 20 69 73 20 74 68 | # reali|ze is th|
|00001cc0| 65 20 6d 65 74 68 6f 64 | 20 77 68 69 63 68 20 6d |e method| which m|
|00001cd0| 61 6b 65 73 20 61 6e 20 | 48 54 4d 4c 20 6f 62 6a |akes an |HTML obj|
|00001ce0| 65 63 74 20 74 72 65 65 | 20 6f 75 74 70 75 74 20 |ect tree| output |
|00001cf0| 69 74 73 65 6c 66 2e 0a | 0a 20 20 73 75 62 20 48 |itself..|. sub H|
|00001d00| 54 4d 4c 3a 3a 42 61 73 | 65 3a 3a 72 65 61 6c 69 |TML::Bas|e::reali|
|00001d10| 7a 65 20 7b 0a 20 20 20 | 20 48 54 4d 4c 3a 3a 42 |ze {. | HTML::B|
|00001d20| 61 73 65 3a 3a 65 78 65 | 63 75 74 65 28 29 3b 0a |ase::exe|cute();.|
|00001d30| 20 20 7d 0a 0a 20 20 23 | 20 65 78 65 63 75 74 65 | }.. #| execute|
|00001d40| 20 69 73 20 74 68 65 20 | 6d 65 74 68 6f 64 20 77 | is the |method w|
|00001d50| 68 69 63 68 20 6d 61 6b | 65 73 20 61 6e 20 48 54 |hich mak|es an HT|
|00001d60| 4d 4c 20 6f 62 6a 65 63 | 74 20 74 72 65 65 20 6f |ML objec|t tree o|
|00001d70| 75 74 70 75 74 20 69 74 | 73 65 6c 66 2e 0a 20 20 |utput it|self.. |
|00001d80| 23 20 48 54 4d 4c 3a 3a | 42 61 73 65 3a 3a 65 78 |# HTML::|Base::ex|
|00001d90| 65 63 75 74 65 20 69 73 | 20 73 69 6d 70 6c 79 20 |ecute is| simply |
|00001da0| 61 20 63 6f 6e 76 65 6e | 69 65 6e 74 20 77 72 61 |a conven|ient wra|
|00001db0| 70 70 65 72 20 61 72 6f | 75 6e 64 20 74 68 65 20 |pper aro|und the |
|00001dc0| 0a 20 20 23 20 48 54 4d | 4c 4f 62 6a 65 63 74 20 |. # HTM|LObject |
|00001dd0| 63 6c 61 73 73 27 73 20 | 65 78 65 63 75 74 65 20 |class's |execute |
|00001de0| 6d 65 74 68 6f 64 2e 20 | 20 49 6e 20 74 68 69 73 |method. | In this|
|00001df0| 20 77 61 79 2c 20 61 20 | 63 6c 69 65 6e 74 20 61 | way, a |client a|
|00001e00| 70 70 6c 69 63 61 74 69 | 6f 6e 20 6d 61 79 20 0a |pplicati|on may .|
|00001e10| 20 20 23 20 75 73 65 20 | 74 68 65 20 48 54 4d 4c | # use |the HTML|
|00001e20| 3a 3a 42 61 73 65 3a 3a | 65 78 65 63 75 74 65 20 |::Base::|execute |
|00001e30| 66 75 6e 63 74 69 6f 6e | 20 77 69 74 68 6f 75 74 |function| without|
|00001e40| 20 61 6e 79 20 61 72 67 | 75 6d 65 6e 74 73 20 74 | any arg|uments t|
|00001e50| 6f 20 6d 65 61 6e 20 0a | 20 20 23 20 22 65 78 65 |o mean .| # "exe|
|00001e60| 63 75 74 65 20 74 68 65 | 20 65 6e 74 69 72 65 20 |cute the| entire |
|00001e70| 6f 62 6a 65 63 74 20 74 | 72 65 65 20 66 72 6f 6d |object t|ree from|
|00001e80| 20 74 68 65 20 74 6f 70 | 20 64 6f 77 6e 22 2e 0a | the top| down"..|
|00001e90| 0a 20 20 73 75 62 20 48 | 54 4d 4c 3a 3a 42 61 73 |. sub H|TML::Bas|
|00001ea0| 65 3a 3a 65 78 65 63 75 | 74 65 20 7b 0a 20 20 20 |e::execu|te {. |
|00001eb0| 20 48 54 4d 4c 3a 3a 42 | 61 73 65 3a 3a 5f 73 68 | HTML::B|ase::_sh|
|00001ec0| 6f 77 5f 73 75 62 5f 65 | 6e 74 72 79 20 28 40 5f |ow_sub_e|ntry (@_|
|00001ed0| 29 3b 0a 20 20 20 20 6d | 79 20 24 74 6f 70 20 3d |);. m|y $top =|
|00001ee0| 20 48 54 4d 4c 3a 3a 42 | 61 73 65 3a 3a 48 54 4d | HTML::B|ase::HTM|
|00001ef0| 4c 4f 62 6a 65 63 74 3a | 3a 66 69 6e 64 5f 74 6f |LObject:|:find_to|
|00001f00| 70 5f 6f 62 6a 65 63 74 | 20 28 24 43 75 72 72 65 |p_object| ($Curre|
|00001f10| 6e 74 4f 62 6a 65 63 74 | 29 3b 0a 20 20 20 20 69 |ntObject|);. i|
|00001f20| 66 20 28 24 74 6f 70 29 | 20 7b 24 74 6f 70 2d 3e |f ($top)| {$top->|
|00001f30| 65 78 65 63 75 74 65 7d | 0a 20 20 7d 0a 0a 20 20 |execute}|. }.. |
|00001f40| 23 20 48 54 4d 4c 3a 3a | 42 61 73 65 3a 3a 6c 69 |# HTML::|Base::li|
|00001f50| 6e 6b 5f 74 6f 5f 70 61 | 72 65 6e 74 20 74 61 6b |nk_to_pa|rent tak|
|00001f60| 65 73 20 61 20 72 65 66 | 65 72 65 6e 63 65 20 74 |es a ref|erence t|
|00001f70| 6f 20 74 77 6f 20 48 54 | 4d 4c 4f 62 6a 65 63 74 |o two HT|MLObject|
|00001f80| 73 20 28 73 65 65 0a 20 | 20 23 20 70 61 63 6b 61 |s (see. | # packa|
|00001f90| 67 65 20 48 54 4d 4c 4f | 62 6a 65 63 74 20 62 65 |ge HTMLO|bject be|
|00001fa0| 6c 6f 77 20 66 6f 72 20 | 61 20 64 65 73 63 72 69 |low for |a descri|
|00001fb0| 70 74 69 6f 6e 20 6f 66 | 20 74 68 65 20 6f 62 6a |ption of| the obj|
|00001fc0| 65 63 74 29 20 61 6e 64 | 20 6d 61 6b 65 73 20 74 |ect) and| makes t|
|00001fd0| 68 65 0a 20 20 23 20 66 | 69 72 73 74 20 74 68 65 |he. # f|irst the|
|00001fe0| 20 63 68 69 6c 64 20 6f | 66 20 74 68 65 20 73 65 | child o|f the se|
|00001ff0| 63 6f 6e 64 2e 20 20 52 | 65 74 75 72 6e 73 20 61 |cond. R|eturns a|
|00002000| 20 72 65 66 65 72 65 6e | 63 65 20 74 6f 20 74 68 | referen|ce to th|
|00002010| 65 20 66 69 72 73 74 20 | 28 66 6f 72 0a 20 20 23 |e first |(for. #|
|00002020| 20 6c 61 63 6b 20 6f 66 | 20 61 6e 79 20 62 65 74 | lack of| any bet|
|00002030| 74 65 72 20 72 65 74 75 | 72 6e 29 2e 0a 0a 20 20 |ter retu|rn)... |
|00002040| 73 75 62 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a |sub HTML|::Base::|
|00002050| 6c 69 6e 6b 5f 74 6f 5f | 70 61 72 65 6e 74 20 7b |link_to_|parent {|
|00002060| 0a 20 20 20 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a |. HTM|L::Base:|
|00002070| 3a 5f 73 68 6f 77 5f 73 | 75 62 5f 65 6e 74 72 79 |:_show_s|ub_entry|
|00002080| 20 28 40 5f 29 3b 0a 20 | 20 20 20 6d 79 20 28 24 | (@_);. | my ($|
|00002090| 73 65 6c 66 2c 20 24 70 | 61 72 65 6e 74 29 20 3d |self, $p|arent) =|
|000020a0| 20 40 5f 3b 0a 20 20 20 | 20 69 66 20 28 24 73 65 | @_;. | if ($se|
|000020b0| 6c 66 20 26 26 20 24 70 | 61 72 65 6e 74 29 20 7b |lf && $p|arent) {|
|000020c0| 0a 20 20 20 20 20 20 69 | 66 20 28 24 44 65 62 75 |. i|f ($Debu|
|000020d0| 67 29 20 7b 0a 09 70 72 | 69 6e 74 20 53 54 44 45 |g) {..pr|int STDE|
|000020e0| 52 52 20 22 5c 6e 48 54 | 4d 4c 3a 3a 42 61 73 65 |RR "\nHT|ML::Base|
|000020f0| 3a 3a 6c 69 6e 6b 5f 74 | 6f 5f 70 61 72 65 6e 74 |::link_t|o_parent|
|00002100| 20 6c 69 6e 6b 69 6e 67 | 5c 6e 20 20 24 73 65 6c | linking|\n $sel|
|00002110| 66 20 74 6f 5c 6e 20 20 | 24 70 61 72 65 6e 74 5c |f to\n |$parent\|
|00002120| 6e 22 3b 0a 20 20 20 20 | 20 20 7d 0a 20 20 20 20 |n";. | }. |
|00002130| 20 20 24 73 65 6c 66 2d | 3e 7b 27 50 61 72 65 6e | $self-|>{'Paren|
|00002140| 74 27 7d 20 3d 20 24 70 | 61 72 65 6e 74 3b 0a 20 |t'} = $p|arent;. |
|00002150| 20 20 20 20 20 70 75 73 | 68 20 40 7b 24 70 61 72 | pus|h @{$par|
|00002160| 65 6e 74 2d 3e 7b 27 43 | 68 69 6c 64 72 65 6e 27 |ent->{'C|hildren'|
|00002170| 7d 7d 20 2c 20 24 73 65 | 6c 66 3b 0a 20 20 20 20 |}} , $se|lf;. |
|00002180| 7d 0a 20 20 20 20 24 73 | 65 6c 66 3b 0a 20 20 7d |}. $s|elf;. }|
|00002190| 0a 0a 20 20 23 20 48 54 | 4d 4c 3a 3a 42 61 73 65 |.. # HT|ML::Base|
|000021a0| 3a 3a 6f 62 6a 65 63 74 | 5f 74 79 70 65 20 72 65 |::object|_type re|
|000021b0| 74 75 72 6e 73 20 74 68 | 65 20 6e 61 6d 65 20 6f |turns th|e name o|
|000021c0| 66 20 74 68 65 20 48 54 | 4d 4c 20 6f 62 6a 65 63 |f the HT|ML objec|
|000021d0| 74 20 77 68 6f 73 65 20 | 72 65 66 65 72 65 6e 63 |t whose |referenc|
|000021e0| 65 0a 20 20 23 20 69 73 | 20 70 61 73 73 65 64 20 |e. # is| passed |
|000021f0| 69 6e 2e 0a 0a 20 20 73 | 75 62 20 48 54 4d 4c 3a |in... s|ub HTML:|
|00002200| 3a 42 61 73 65 3a 3a 6f | 62 6a 65 63 74 5f 74 79 |:Base::o|bject_ty|
|00002210| 70 65 20 7b 0a 20 20 20 | 20 20 20 6d 79 20 24 73 |pe {. | my $s|
|00002220| 65 6c 66 20 3d 20 73 68 | 69 66 74 3b 0a 20 20 20 |elf = sh|ift;. |
|00002230| 20 20 20 6d 79 20 40 6c | 69 73 74 3b 0a 20 20 20 | my @l|ist;. |
|00002240| 20 20 20 28 40 6c 69 73 | 74 29 20 3d 20 73 70 6c | (@lis|t) = spl|
|00002250| 69 74 20 2f 3d 2f 2c 20 | 24 73 65 6c 66 3b 0a 20 |it /=/, |$self;. |
|00002260| 20 20 20 20 20 28 40 6c | 69 73 74 29 20 3d 20 73 | (@l|ist) = s|
|00002270| 70 6c 69 74 20 2f 3a 3a | 2f 2c 20 24 6c 69 73 74 |plit /::|/, $list|
|00002280| 5b 30 5d 3b 0a 20 20 20 | 20 20 20 24 6c 69 73 74 |[0];. | $list|
|00002290| 5b 32 5d 3b 0a 20 20 7d | 0a 0a 20 20 23 20 47 69 |[2];. }|.. # Gi|
|000022a0| 76 65 6e 20 61 6e 20 48 | 54 4d 4c 20 6f 62 6a 65 |ven an H|TML obje|
|000022b0| 63 74 20 72 65 66 65 72 | 65 6e 63 65 20 61 6e 64 |ct refer|ence and|
|000022c0| 20 61 20 74 79 70 65 20 | 6f 66 20 61 6e 20 48 54 | a type |of an HT|
|000022d0| 4d 4c 20 6f 62 6a 65 63 | 74 2c 20 0a 20 20 23 20 |ML objec|t, . # |
|000022e0| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 63 6f 6e 74 |HTML::Ba|se::cont|
|000022f0| 61 69 6e 65 64 5f 62 79 | 20 72 65 74 75 72 6e 73 |ained_by| returns|
|00002300| 20 31 20 69 66 20 74 68 | 65 20 67 69 76 65 6e 20 | 1 if th|e given |
|00002310| 6f 62 6a 65 63 74 20 69 | 73 20 63 6f 6e 74 61 69 |object i|s contai|
|00002320| 6e 65 64 0a 20 20 23 20 | 28 61 74 20 61 6e 79 20 |ned. # |(at any |
|00002330| 68 69 67 68 65 72 20 6c | 65 76 65 6c 29 20 62 79 |higher l|evel) by|
|00002340| 20 61 6e 6f 74 68 65 72 | 20 6f 62 6a 65 63 74 20 | another| object |
|00002350| 6f 66 20 74 68 65 20 67 | 69 76 65 6e 20 74 79 70 |of the g|iven typ|
|00002360| 65 2c 20 6f 72 20 72 65 | 74 75 72 6e 73 0a 20 20 |e, or re|turns. |
|00002370| 23 20 30 20 6f 74 68 65 | 72 77 69 73 65 2e 0a 0a |# 0 othe|rwise...|
|00002380| 20 20 73 75 62 20 48 54 | 4d 4c 3a 3a 42 61 73 65 | sub HT|ML::Base|
|00002390| 3a 3a 63 6f 6e 74 61 69 | 6e 65 64 5f 62 79 20 7b |::contai|ned_by {|
|000023a0| 0a 20 20 20 20 6d 79 20 | 28 24 73 65 6c 66 2c 20 |. my |($self, |
|000023b0| 24 74 79 70 65 29 20 3d | 20 40 5f 3b 0a 20 20 20 |$type) =| @_;. |
|000023c0| 20 69 66 20 28 24 73 65 | 6c 66 20 26 26 20 24 74 | if ($se|lf && $t|
|000023d0| 79 70 65 29 20 7b 0a 20 | 20 20 20 20 20 77 68 69 |ype) {. | whi|
|000023e0| 6c 65 20 28 24 73 65 6c | 66 29 20 7b 0a 20 20 20 |le ($sel|f) {. |
|000023f0| 20 20 20 20 20 69 66 20 | 28 48 54 4d 4c 3a 3a 42 | if |(HTML::B|
|00002400| 61 73 65 3a 3a 6f 62 6a | 65 63 74 5f 74 79 70 65 |ase::obj|ect_type|
|00002410| 28 24 73 65 6c 66 29 20 | 65 71 20 24 74 79 70 65 |($self) |eq $type|
|00002420| 29 20 7b 20 72 65 74 75 | 72 6e 20 28 31 29 20 7d |) { retu|rn (1) }|
|00002430| 0a 20 20 20 20 20 20 20 | 20 24 73 65 6c 66 20 3d |. | $self =|
|00002440| 20 24 73 65 6c 66 2d 3e | 7b 50 61 72 65 6e 74 7d | $self->|{Parent}|
|00002450| 3b 0a 20 20 20 20 20 20 | 7d 0a 20 20 20 20 7d 0a |;. |}. }.|
|00002460| 20 20 20 20 72 65 74 75 | 72 6e 20 28 30 29 3b 0a | retu|rn (0);.|
|00002470| 20 20 7d 0a 0a 23 23 23 | 23 23 23 23 23 23 23 23 | }..###|########|
|00002480| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002490| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000024a0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000024b0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000024c0| 23 23 23 0a 0a 20 20 23 | 20 48 54 4d 4c 3a 3a 42 |###.. #| HTML::B|
|000024d0| 61 73 65 20 70 72 69 76 | 61 74 65 20 66 75 6e 63 |ase priv|ate func|
|000024e0| 74 69 6f 6e 73 0a 20 20 | 09 0a 20 20 23 20 48 54 |tions. |.. # HT|
|000024f0| 4d 4c 3a 3a 42 61 73 65 | 3a 3a 5f 73 65 74 5f 69 |ML::Base|::_set_i|
|00002500| 66 5f 6e 6f 74 5f 73 65 | 74 28 29 20 73 69 6d 70 |f_not_se|t() simp|
|00002510| 6c 79 20 63 68 65 63 6b | 73 20 69 66 20 74 68 65 |ly check|s if the|
|00002520| 20 63 61 6c 6c 65 72 20 | 72 65 71 75 65 73 74 65 | caller |requeste|
|00002530| 64 20 74 68 61 74 0a 20 | 20 23 20 61 6e 20 41 74 |d that. | # an At|
|00002540| 74 72 69 62 75 74 65 20 | 62 65 20 73 65 74 20 61 |tribute |be set a|
|00002550| 20 64 65 73 69 72 65 64 | 20 76 61 6c 75 65 2c 20 | desired| value, |
|00002560| 65 6c 73 65 20 69 74 20 | 73 65 74 73 20 69 74 20 |else it |sets it |
|00002570| 74 6f 20 74 68 65 0a 20 | 20 23 20 73 75 70 70 6c |to the. | # suppl|
|00002580| 69 65 64 20 64 65 66 61 | 75 6c 74 20 76 61 6c 75 |ied defa|ult valu|
|00002590| 65 2e 0a 20 20 23 20 4e | 42 20 2d 20 49 74 20 77 |e.. # N|B - It w|
|000025a0| 6f 75 6c 64 20 62 65 20 | 75 73 65 66 75 6c 20 69 |ould be |useful i|
|000025b0| 66 20 77 65 20 68 61 64 | 20 61 20 6c 69 73 74 20 |f we had| a list |
|000025c0| 6f 66 20 61 63 63 65 70 | 74 61 62 6c 65 20 76 61 |of accep|table va|
|000025d0| 6c 75 65 73 0a 20 20 23 | 20 66 6f 72 20 74 68 6f |lues. #| for tho|
|000025e0| 73 65 20 41 74 74 72 69 | 62 75 74 65 73 20 74 68 |se Attri|butes th|
|000025f0| 61 74 20 6c 69 6d 69 74 | 20 74 68 65 20 76 61 6c |at limit| the val|
|00002600| 75 65 73 20 61 6e 64 20 | 64 69 64 20 65 72 72 6f |ues and |did erro|
|00002610| 72 20 63 68 65 63 6b 69 | 6e 67 0a 20 20 23 20 61 |r checki|ng. # a|
|00002620| 67 61 69 6e 73 74 20 74 | 68 65 6d 2e 0a 20 0a 20 |gainst t|hem.. . |
|00002630| 20 73 75 62 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | sub HTM|L::Base:|
|00002640| 3a 5f 73 65 74 5f 69 66 | 5f 6e 6f 74 5f 73 65 74 |:_set_if|_not_set|
|00002650| 20 7b 0a 20 20 20 20 6d | 79 28 24 73 65 6c 66 2c | {. m|y($self,|
|00002660| 20 24 61 74 74 72 69 62 | 75 74 65 2c 20 24 64 65 | $attrib|ute, $de|
|00002670| 66 61 75 6c 74 29 20 3d | 20 40 5f 3b 0a 20 20 20 |fault) =| @_;. |
|00002680| 20 75 6e 6c 65 73 73 20 | 28 64 65 66 69 6e 65 64 | unless |(defined|
|00002690| 20 24 73 65 6c 66 2d 3e | 7b 41 74 74 72 69 62 75 | $self->|{Attribu|
|000026a0| 74 65 73 7d 2d 3e 7b 24 | 61 74 74 72 69 62 75 74 |tes}->{$|attribut|
|000026b0| 65 7d 29 20 7b 0a 20 20 | 20 20 20 20 24 73 65 6c |e}) {. | $sel|
|000026c0| 66 2d 3e 7b 41 74 74 72 | 69 62 75 74 65 73 7d 2d |f->{Attr|ibutes}-|
|000026d0| 3e 7b 24 61 74 74 72 69 | 62 75 74 65 7d 20 3d 20 |>{$attri|bute} = |
|000026e0| 24 64 65 66 61 75 6c 74 | 3b 0a 20 20 20 20 7d 0a |$default|;. }.|
|000026f0| 20 20 7d 0a 0a 20 20 23 | 20 48 54 4d 4c 3a 3a 42 | }.. #| HTML::B|
|00002700| 61 73 65 3a 3a 5f 63 6f | 70 79 5f 61 74 74 72 69 |ase::_co|py_attri|
|00002710| 62 75 74 65 73 20 63 6f | 70 69 65 73 20 74 68 65 |butes co|pies the|
|00002720| 20 41 74 74 72 69 62 75 | 74 65 73 20 68 61 73 68 | Attribu|tes hash|
|00002730| 20 66 72 6f 6d 20 74 68 | 65 20 73 6f 75 72 63 65 | from th|e source|
|00002740| 0a 20 20 23 20 6f 62 6a | 65 63 74 20 69 6e 74 6f |. # obj|ect into|
|00002750| 20 74 68 65 20 64 65 73 | 74 69 6e 61 74 69 6f 6e | the des|tination|
|00002760| 20 6f 62 6a 65 63 74 2e | 0a 0a 20 20 73 75 62 20 | object.|.. sub |
|00002770| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 5f 63 6f 70 |HTML::Ba|se::_cop|
|00002780| 79 5f 61 74 74 72 69 62 | 75 74 65 73 20 7b 0a 20 |y_attrib|utes {. |
|00002790| 20 20 20 48 54 4d 4c 3a | 3a 42 61 73 65 3a 3a 5f | HTML:|:Base::_|
|000027a0| 73 68 6f 77 5f 73 75 62 | 5f 65 6e 74 72 79 20 28 |show_sub|_entry (|
|000027b0| 40 5f 29 3b 0a 20 20 20 | 20 6d 79 28 24 73 6f 75 |@_);. | my($sou|
|000027c0| 72 63 65 2c 20 24 64 65 | 73 74 69 6e 61 74 69 6f |rce, $de|stinatio|
|000027d0| 6e 29 20 3d 20 40 5f 3b | 0a 20 20 20 20 6d 79 20 |n) = @_;|. my |
|000027e0| 28 24 6b 65 79 2c 20 24 | 76 61 6c 75 65 29 3b 0a |($key, $|value);.|
|000027f0| 20 20 20 20 69 66 20 28 | 24 73 6f 75 72 63 65 2d | if (|$source-|
|00002800| 3e 7b 41 74 74 72 69 62 | 75 74 65 73 7d 29 20 7b |>{Attrib|utes}) {|
|00002810| 0a 20 20 20 20 20 20 77 | 68 69 6c 65 20 28 28 24 |. w|hile (($|
|00002820| 6b 65 79 2c 24 76 61 6c | 75 65 29 20 3d 20 65 61 |key,$val|ue) = ea|
|00002830| 63 68 20 25 7b 24 73 6f | 75 72 63 65 2d 3e 7b 41 |ch %{$so|urce->{A|
|00002840| 74 74 72 69 62 75 74 65 | 73 7d 7d 29 20 7b 0a 20 |ttribute|s}}) {. |
|00002850| 20 20 20 20 20 20 20 24 | 64 65 73 74 69 6e 61 74 | $|destinat|
|00002860| 69 6f 6e 2d 3e 7b 41 74 | 74 72 69 62 75 74 65 73 |ion->{At|tributes|
|00002870| 7d 2d 3e 7b 24 6b 65 79 | 7d 20 3d 20 24 76 61 6c |}->{$key|} = $val|
|00002880| 75 65 3b 0a 20 20 20 20 | 20 20 7d 0a 20 20 20 20 |ue;. | }. |
|00002890| 7d 0a 20 20 7d 0a 0a 20 | 20 23 20 48 54 4d 4c 3a |}. }.. | # HTML:|
|000028a0| 3a 42 61 73 65 3a 3a 5f | 6f 75 74 70 75 74 5f 68 |:Base::_|output_h|
|000028b0| 74 6d 6c 20 69 73 20 61 | 20 73 69 6d 70 6c 65 20 |tml is a| simple |
|000028c0| 6f 75 74 70 75 74 20 66 | 69 6c 74 65 72 20 77 68 |output f|ilter wh|
|000028d0| 69 63 68 20 74 72 61 6e | 73 6c 61 74 65 73 20 61 |ich tran|slates a|
|000028e0| 6c 6c 20 6f 66 20 0a 20 | 20 23 20 74 68 65 20 48 |ll of . | # the H|
|000028f0| 54 4d 4c 0a 20 20 23 20 | 72 65 73 65 72 76 65 64 |TML. # |reserved|
|00002900| 20 63 68 61 72 61 63 74 | 65 72 73 20 28 6c 69 6b | charact|ers (lik|
|00002910| 65 20 22 3c 22 20 61 6e | 64 20 22 3e 22 29 20 74 |e "<" an|d ">") t|
|00002920| 6f 20 74 68 65 69 72 20 | 48 54 4d 4c 20 65 73 63 |o their |HTML esc|
|00002930| 61 70 65 20 65 71 75 69 | 76 61 6c 65 6e 74 73 2c |ape equi|valents,|
|00002940| 0a 20 20 23 20 74 68 65 | 6e 20 6f 75 74 70 75 74 |. # the|n output|
|00002950| 73 20 74 68 65 20 72 65 | 73 75 6c 74 69 6e 67 20 |s the re|sulting |
|00002960| 73 74 72 69 6e 67 2e 0a | 0a 20 20 73 75 62 20 48 |string..|. sub H|
|00002970| 54 4d 4c 3a 3a 42 61 73 | 65 3a 3a 5f 6f 75 74 70 |TML::Bas|e::_outp|
|00002980| 75 74 5f 68 74 6d 6c 20 | 7b 0a 20 20 20 20 48 54 |ut_html |{. HT|
|00002990| 4d 4c 3a 3a 42 61 73 65 | 3a 3a 5f 73 68 6f 77 5f |ML::Base|::_show_|
|000029a0| 73 75 62 5f 65 6e 74 72 | 79 20 28 40 5f 29 3b 0a |sub_entr|y (@_);.|
|000029b0| 20 20 20 20 6d 79 20 24 | 73 74 72 69 6e 67 20 3d | my $|string =|
|000029c0| 20 73 68 69 66 74 3b 0a | 20 20 20 20 24 73 74 72 | shift;.| $str|
|000029d0| 69 6e 67 20 3d 7e 20 73 | 2f 5c 26 2f 5c 26 61 6d |ing =~ s|/\&/\&am|
|000029e0| 70 3b 2f 67 3b 0a 20 20 | 20 20 24 73 74 72 69 6e |p;/g;. | $strin|
|000029f0| 67 20 3d 7e 20 73 2f 5c | 3c 2f 5c 26 6c 74 3b 2f |g =~ s/\|</\&lt;/|
|00002a00| 67 3b 0a 20 20 20 20 24 | 73 74 72 69 6e 67 20 3d |g;. $|string =|
|00002a10| 7e 20 73 2f 5c 3e 2f 5c | 26 67 74 3b 2f 67 3b 0a |~ s/\>/\|&gt;/g;.|
|00002a20| 20 20 20 20 24 73 74 72 | 69 6e 67 20 3d 7e 20 73 | $str|ing =~ s|
|00002a30| 2f 5c 22 2f 5c 26 71 75 | 6f 74 3b 2f 67 3b 0a 20 |/\"/\&qu|ot;/g;. |
|00002a40| 20 20 20 70 72 69 6e 74 | 20 24 73 74 72 69 6e 67 | print| $string|
|00002a50| 3b 0a 20 20 7d 0a 0a 20 | 20 23 20 48 54 4d 4c 3a |;. }.. | # HTML:|
|00002a60| 3a 42 61 73 65 3a 3a 5f | 63 6f 6e 64 69 74 69 6f |:Base::_|conditio|
|00002a70| 6e 61 6c 5f 6e 65 77 6c | 69 6e 65 20 6f 75 74 70 |nal_newl|ine outp|
|00002a80| 75 74 73 20 61 20 6e 65 | 77 6c 69 6e 65 20 63 68 |uts a ne|wline ch|
|00002a90| 61 72 61 63 74 65 72 20 | 69 66 20 74 68 65 20 0a |aracter |if the .|
|00002aa0| 20 20 23 20 6f 62 6a 65 | 63 74 20 70 61 73 73 65 | # obje|ct passe|
|00002ab0| 64 20 74 6f 20 69 74 20 | 69 73 20 6e 6f 74 20 63 |d to it |is not c|
|00002ac0| 6f 6e 74 61 69 6e 65 64 | 20 77 69 74 68 69 6e 20 |ontained| within |
|00002ad0| 61 6e 20 48 54 4d 4c 20 | 6f 62 6a 65 63 74 20 77 |an HTML |object w|
|00002ae0| 68 69 63 68 20 64 6f 65 | 73 6e 27 74 0a 20 20 23 |hich doe|sn't. #|
|00002af0| 20 77 61 6e 74 20 6e 65 | 77 6c 69 6e 65 73 20 70 | want ne|wlines p|
|00002b00| 72 69 6e 74 65 64 2e 20 | 20 54 68 69 73 20 69 73 |rinted. | This is|
|00002b10| 20 69 6e 64 69 63 61 74 | 65 64 20 62 79 20 74 68 | indicat|ed by th|
|00002b20| 65 20 6f 62 6a 65 63 74 | 27 73 20 68 61 76 69 6e |e object|'s havin|
|00002b30| 67 20 61 0a 20 20 23 20 | 4e 6f 4e 65 77 4c 69 6e |g a. # |NoNewLin|
|00002b40| 65 20 68 61 73 68 20 6b | 65 79 20 73 70 65 63 69 |e hash k|ey speci|
|00002b50| 66 69 65 64 2e 0a 0a 20 | 20 73 75 62 20 48 54 4d |fied... | sub HTM|
|00002b60| 4c 3a 3a 42 61 73 65 3a | 3a 5f 63 6f 6e 64 69 74 |L::Base:|:_condit|
|00002b70| 69 6f 6e 61 6c 5f 6e 65 | 77 6c 69 6e 65 20 7b 0a |ional_ne|wline {.|
|00002b80| 20 20 20 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | HTML|::Base::|
|00002b90| 5f 73 68 6f 77 5f 73 75 | 62 5f 65 6e 74 72 79 20 |_show_su|b_entry |
|00002ba0| 28 40 5f 29 3b 0a 20 20 | 20 20 6d 79 20 24 73 65 |(@_);. | my $se|
|00002bb0| 6c 66 20 3d 20 73 68 69 | 66 74 3b 0a 20 20 20 20 |lf = shi|ft;. |
|00002bc0| 77 68 69 6c 65 20 28 24 | 73 65 6c 66 29 20 7b 0a |while ($|self) {.|
|00002bd0| 20 20 20 20 20 20 69 66 | 20 28 24 73 65 6c 66 2d | if| ($self-|
|00002be0| 3e 7b 4e 6f 4e 65 77 4c | 69 6e 65 7d 29 20 7b 20 |>{NoNewL|ine}) { |
|00002bf0| 72 65 74 75 72 6e 20 28 | 30 29 20 7d 0a 20 20 20 |return (|0) }. |
|00002c00| 20 20 20 24 73 65 6c 66 | 20 3d 20 24 73 65 6c 66 | $self| = $self|
|00002c10| 2d 3e 7b 50 61 72 65 6e | 74 7d 3b 0a 20 20 20 20 |->{Paren|t};. |
|00002c20| 7d 0a 20 20 20 20 70 72 | 69 6e 74 20 22 5c 6e 22 |}. pr|int "\n"|
|00002c30| 3b 0a 20 20 7d 0a 0a 20 | 20 23 20 48 54 4d 4c 3a |;. }.. | # HTML:|
|00002c40| 3a 42 61 73 65 3a 3a 5f | 63 6f 6d 6d 65 6e 74 5f |:Base::_|comment_|
|00002c50| 64 69 76 69 64 65 72 20 | 73 69 6d 70 6c 79 20 64 |divider |simply d|
|00002c60| 72 61 77 73 20 61 20 6e | 69 63 65 20 64 69 76 69 |raws a n|ice divi|
|00002c70| 64 65 72 20 74 6f 20 73 | 65 70 61 72 61 74 65 0a |der to s|eparate.|
|00002c80| 20 20 23 20 63 6f 6d 6d | 65 6e 74 73 20 69 6e 20 | # comm|ents in |
|00002c90| 44 65 62 75 67 20 6d 6f | 64 65 0a 0a 20 20 73 75 |Debug mo|de.. su|
|00002ca0| 62 20 48 54 4d 4c 3a 3a | 42 61 73 65 3a 3a 5f 63 |b HTML::|Base::_c|
|00002cb0| 6f 6d 6d 65 6e 74 5f 64 | 69 76 69 64 65 72 20 7b |omment_d|ivider {|
|00002cc0| 0a 20 20 20 20 69 66 20 | 28 24 44 65 62 75 67 29 |. if |($Debug)|
|00002cd0| 20 7b 70 72 69 6e 74 20 | 53 54 44 45 52 52 20 28 | {print |STDERR (|
|00002ce0| 22 23 22 20 78 20 37 39 | 20 2e 20 22 5c 6e 22 29 |"#" x 79| . "\n")|
|00002cf0| 3b 7d 0a 20 20 7d 0a 0a | 20 20 23 20 48 54 4d 4c |;}. }..| # HTML|
|00002d00| 3a 3a 42 61 73 65 3a 3a | 5f 73 68 6f 77 5f 73 75 |::Base::|_show_su|
|00002d10| 62 5f 65 6e 74 72 79 20 | 70 72 69 6e 74 73 20 64 |b_entry |prints d|
|00002d20| 65 62 75 67 20 69 6e 66 | 6f 72 6d 61 74 69 6f 6e |ebug inf|ormation|
|00002d30| 20 61 62 6f 75 74 20 74 | 68 65 20 65 6e 74 72 79 | about t|he entry|
|00002d40| 0a 20 20 23 20 6f 66 20 | 74 68 65 20 73 75 62 72 |. # of |the subr|
|00002d50| 6f 75 74 69 6e 65 20 77 | 68 6f 20 63 61 6c 6c 65 |outine w|ho calle|
|00002d60| 64 20 74 68 69 73 20 6f | 6e 65 2e 20 20 54 6f 20 |d this o|ne. To |
|00002d70| 75 73 65 2c 20 6d 61 6b | 65 20 74 68 69 73 20 74 |use, mak|e this t|
|00002d80| 68 65 20 66 69 72 73 74 | 0a 20 20 23 20 6c 69 6e |he first|. # lin|
|00002d90| 65 20 6f 66 20 61 20 73 | 75 62 72 6f 75 74 69 6e |e of a s|ubroutin|
|00002da0| 65 3a 0a 20 20 23 09 48 | 54 4d 4c 3a 3a 42 61 73 |e:. #.H|TML::Bas|
|00002db0| 65 3a 3a 5f 73 68 6f 77 | 5f 73 75 62 5f 65 6e 74 |e::_show|_sub_ent|
|00002dc0| 72 79 20 28 40 5f 29 3b | 0a 0a 20 20 73 75 62 20 |ry (@_);|.. sub |
|00002dd0| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 5f 73 68 6f |HTML::Ba|se::_sho|
|00002de0| 77 5f 73 75 62 5f 65 6e | 74 72 79 20 7b 0a 20 20 |w_sub_en|try {. |
|00002df0| 20 20 69 66 20 28 24 44 | 65 62 75 67 29 20 7b 0a | if ($D|ebug) {.|
|00002e00| 20 20 20 20 20 20 6d 79 | 20 40 63 61 6c 6c 64 61 | my| @callda|
|00002e10| 74 61 20 3d 20 63 61 6c | 6c 65 72 28 31 29 3b 0a |ta = cal|ler(1);.|
|00002e20| 20 20 20 20 20 20 70 72 | 69 6e 74 20 53 54 44 45 | pr|int STDE|
|00002e30| 52 52 20 22 5c 6e 24 63 | 61 6c 6c 64 61 74 61 5b |RR "\n$c|alldata[|
|00002e40| 33 5d 3a 20 5c 40 5f 20 | 3d 20 5c 6e 20 20 40 5f |3]: \@_ |= \n @_|
|00002e50| 5c 6e 22 3b 0a 20 20 20 | 20 7d 0a 20 20 7d 0a 0a |\n";. | }. }..|
|00002e60| 20 20 23 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | # HTML|::Base::|
|00002e70| 5f 73 68 6f 77 5f 6e 65 | 77 5f 6f 62 6a 65 63 74 |_show_ne|w_object|
|00002e80| 20 70 72 69 6e 74 73 20 | 64 65 62 75 67 20 69 6e | prints |debug in|
|00002e90| 66 6f 72 6d 61 74 69 6f | 6e 20 61 62 6f 75 74 20 |formatio|n about |
|00002ea0| 74 68 65 20 6f 62 6a 65 | 63 74 0a 20 20 23 20 77 |the obje|ct. # w|
|00002eb0| 65 20 6a 75 73 74 20 63 | 72 65 61 74 65 64 2c 20 |e just c|reated, |
|00002ec0| 61 6e 64 20 65 6e 64 73 | 20 74 68 65 20 6f 62 6a |and ends| the obj|
|00002ed0| 65 63 74 27 73 20 63 6f | 6d 6d 65 6e 74 20 73 65 |ect's co|mment se|
|00002ee0| 63 74 69 6f 6e 20 77 69 | 74 68 20 61 20 64 69 76 |ction wi|th a div|
|00002ef0| 69 64 65 72 2e 0a 20 20 | 23 20 54 6f 20 75 73 65 |ider.. |# To use|
|00002f00| 2c 20 6d 61 6b 65 20 74 | 68 69 73 20 63 61 6c 6c |, make t|his call|
|00002f10| 20 61 66 74 65 72 20 74 | 68 65 20 6f 62 6a 65 63 | after t|he objec|
|00002f20| 74 20 68 61 73 20 62 65 | 65 6e 20 62 6c 65 73 73 |t has be|en bless|
|00002f30| 65 64 3a 0a 20 20 23 09 | 48 54 4d 4c 3a 3a 42 61 |ed:. #.|HTML::Ba|
|00002f40| 73 65 3a 3a 5f 73 68 6f | 77 5f 6e 65 77 5f 6f 62 |se::_sho|w_new_ob|
|00002f50| 6a 65 63 74 20 28 24 73 | 65 6c 66 29 3b 0a 0a 20 |ject ($s|elf);.. |
|00002f60| 20 73 75 62 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | sub HTM|L::Base:|
|00002f70| 3a 5f 73 68 6f 77 5f 6e | 65 77 5f 6f 62 6a 65 63 |:_show_n|ew_objec|
|00002f80| 74 20 7b 0a 20 20 20 20 | 69 66 20 28 24 44 65 62 |t {. |if ($Deb|
|00002f90| 75 67 29 20 7b 0a 20 20 | 20 20 20 20 6d 79 20 24 |ug) {. | my $|
|00002fa0| 73 65 6c 66 20 3d 20 73 | 68 69 66 74 3b 0a 20 20 |self = s|hift;. |
|00002fb0| 20 20 20 20 69 66 20 28 | 24 73 65 6c 66 29 20 7b | if (|$self) {|
|00002fc0| 20 24 73 65 6c 66 2d 3e | 73 68 6f 77 6d 65 3b 20 | $self->|showme; |
|00002fd0| 7d 0a 20 20 20 20 20 20 | 48 54 4d 4c 3a 3a 42 61 |}. |HTML::Ba|
|00002fe0| 73 65 3a 3a 5f 63 6f 6d | 6d 65 6e 74 5f 64 69 76 |se::_com|ment_div|
|00002ff0| 69 64 65 72 28 29 3b 0a | 20 20 20 20 7d 0a 20 20 |ider();.| }. |
|00003000| 7d 0a 0a 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |}..#####|########|
|00003010| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003020| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003030| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003040| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003050| 23 0a 0a 20 20 23 20 48 | 54 4d 4c 3a 3a 42 61 73 |#.. # H|TML::Bas|
|00003060| 65 3a 3a 48 54 4d 4c 4f | 62 6a 65 63 74 20 64 65 |e::HTMLO|bject de|
|00003070| 66 69 6e 69 74 69 6f 6e | 0a 0a 20 20 23 20 41 6c |finition|.. # Al|
|00003080| 6c 20 6f 62 6a 65 63 74 | 73 20 74 68 61 74 20 63 |l object|s that c|
|00003090| 61 6e 20 62 65 20 6f 75 | 74 70 75 74 20 74 6f 20 |an be ou|tput to |
|000030a0| 61 6e 20 48 54 4d 4c 20 | 73 74 72 65 61 6d 20 61 |an HTML |stream a|
|000030b0| 72 65 20 64 65 72 69 76 | 65 64 20 63 6c 61 73 73 |re deriv|ed class|
|000030c0| 65 73 20 6f 66 0a 20 20 | 23 20 48 54 4d 4c 3a 3a |es of. |# HTML::|
|000030d0| 42 61 73 65 3a 3a 48 54 | 4d 4c 4f 62 6a 65 63 74 |Base::HT|MLObject|
|000030e0| 2e 20 20 45 61 63 68 20 | 48 54 4d 4c 4f 62 6a 65 |. Each |HTMLObje|
|000030f0| 63 74 20 63 6f 6e 74 61 | 69 6e 73 3a 0a 0a 20 20 |ct conta|ins:.. |
|00003100| 20 20 20 20 20 20 20 23 | 20 41 6e 20 61 6e 6e 6f | #| An anno|
|00003110| 6e 79 6d 6f 75 73 20 68 | 61 73 68 20 28 69 74 73 |nymous h|ash (its|
|00003120| 65 6c 66 29 0a 0a 20 20 | 20 20 20 20 20 20 20 23 |elf).. | #|
|00003130| 20 41 6e 6f 74 68 65 72 | 20 61 6e 6e 6f 6e 79 6d | Another| annonym|
|00003140| 6f 75 73 20 68 61 73 68 | 2c 20 20 6b 6e 6f 77 6e |ous hash|, known|
|00003150| 20 61 73 20 7b 41 74 74 | 72 69 62 75 74 65 73 7d | as {Att|ributes}|
|00003160| 2e 20 20 54 68 69 73 20 | 69 73 20 61 20 70 72 69 |. This |is a pri|
|00003170| 76 61 74 65 0a 20 20 20 | 20 20 20 20 20 20 23 20 |vate. | # |
|00003180| 6e 61 6d 65 73 70 61 63 | 65 20 66 6f 72 20 48 54 |namespac|e for HT|
|00003190| 4d 4c 4f 62 6a 65 63 74 | 2d 73 70 65 63 69 66 69 |MLObject|-specifi|
|000031a0| 63 20 76 61 72 69 61 62 | 6c 65 73 2e 20 20 46 6f |c variab|les. Fo|
|000031b0| 72 20 65 78 61 6d 70 6c | 65 2c 20 74 68 65 0a 20 |r exampl|e, the. |
|000031c0| 20 20 20 20 20 20 20 20 | 23 20 48 54 4d 4c 20 49 | |# HTML I|
|000031d0| 6d 61 67 65 20 74 61 67 | 20 72 65 71 75 69 72 65 |mage tag| require|
|000031e0| 73 20 61 20 22 53 52 43 | 22 20 61 74 74 72 69 62 |s a "SRC|" attrib|
|000031f0| 75 74 65 2e 20 20 4f 74 | 68 65 72 20 48 54 4d 4c |ute. Ot|her HTML|
|00003200| 20 6f 62 6a 65 63 74 73 | 0a 20 20 20 20 20 20 20 | objects|. |
|00003210| 20 20 23 20 28 73 75 63 | 68 20 61 73 20 3c 42 52 | # (suc|h as <BR|
|00003220| 3e 29 20 72 65 71 75 69 | 72 65 20 6e 6f 20 61 74 |>) requi|re no at|
|00003230| 74 72 69 62 75 74 65 73 | 2e 20 20 54 68 69 73 20 |tributes|. This |
|00003240| 6e 61 6d 65 73 70 61 63 | 65 20 6d 61 79 20 61 6c |namespac|e may al|
|00003250| 73 6f 20 62 65 0a 20 20 | 20 20 20 20 20 20 20 23 |so be. | #|
|00003260| 20 75 73 65 64 20 74 6f | 20 73 74 6f 72 65 20 6e | used to| store n|
|00003270| 6f 6e 2d 48 54 4d 4c 20 | 61 74 74 72 69 62 75 74 |on-HTML |attribut|
|00003280| 65 73 20 61 62 6f 75 74 | 20 74 68 65 20 6f 62 6a |es about| the obj|
|00003290| 65 63 74 2c 20 73 6f 20 | 6c 6f 6e 67 20 61 73 20 |ect, so |long as |
|000032a0| 74 68 65 0a 20 20 20 20 | 20 20 20 20 20 23 20 63 |the. | # c|
|000032b0| 68 6f 73 65 6e 20 61 74 | 74 72 69 62 75 74 65 20 |hosen at|tribute |
|000032c0| 6e 61 6d 65 73 20 28 6b | 65 79 73 29 20 64 6f 20 |names (k|eys) do |
|000032d0| 6e 6f 74 20 69 6e 74 65 | 72 66 65 72 65 20 77 69 |not inte|rfere wi|
|000032e0| 74 68 20 74 68 65 20 48 | 54 4d 4c 0a 20 20 20 20 |th the H|TML. |
|000032f0| 20 20 20 20 20 23 20 73 | 74 61 6e 64 61 72 64 20 | # s|tandard |
|00003300| 6f 6e 65 73 2e 20 20 46 | 6f 72 20 65 61 73 65 20 |ones. F|or ease |
|00003310| 6f 66 20 72 65 61 64 69 | 6e 67 2c 20 74 68 65 20 |of readi|ng, the |
|00003320| 48 54 4d 4c 20 61 74 74 | 72 69 62 75 74 65 73 20 |HTML att|ributes |
|00003330| 61 72 65 0a 20 20 20 20 | 20 20 20 20 20 23 20 73 |are. | # s|
|00003340| 70 65 63 69 66 69 65 64 | 20 69 6e 20 61 6c 6c 20 |pecified| in all |
|00003350| 63 61 70 69 74 61 6c 73 | 20 28 69 65 2c 20 22 48 |capitals| (ie, "H|
|00003360| 52 45 46 22 29 2e 0a 0a | 20 20 20 20 20 20 20 20 |REF")...| |
|00003370| 20 23 20 28 4f 70 74 69 | 6f 6e 61 6c 6c 79 29 20 | # (Opti|onally) |
|00003380| 59 65 74 20 61 6e 6f 74 | 68 65 72 20 61 6e 6e 6f |Yet anot|her anno|
|00003390| 6e 79 6d 6f 75 73 20 68 | 61 73 68 2c 20 6b 6e 6f |nymous h|ash, kno|
|000033a0| 77 6e 20 61 73 20 0a 20 | 20 20 20 20 20 20 20 20 |wn as . | |
|000033b0| 23 20 7b 44 69 73 70 6c | 61 79 65 64 5f 41 74 74 |# {Displ|ayed_Att|
|000033c0| 72 69 62 75 74 65 73 7d | 2e 20 20 54 68 69 73 20 |ributes}|. This |
|000033d0| 69 73 20 61 20 6c 69 73 | 74 20 6f 66 20 41 74 74 |is a lis|t of Att|
|000033e0| 72 69 62 75 74 65 20 6b | 65 79 20 6e 61 6d 65 73 |ribute k|ey names|
|000033f0| 20 77 68 69 63 68 0a 20 | 20 20 20 20 20 20 20 20 | which. | |
|00003400| 23 20 61 72 65 20 74 6f | 20 62 65 20 75 73 65 64 |# are to| be used|
|00003410| 20 69 6e 20 62 75 69 6c | 64 69 6e 67 20 74 68 65 | in buil|ding the|
|00003420| 20 48 54 4d 4c 20 74 61 | 67 73 2e 20 20 46 6f 72 | HTML ta|gs. For|
|00003430| 20 65 78 61 6d 70 6c 65 | 2c 20 74 68 65 0a 20 20 | example|, the. |
|00003440| 20 20 20 20 20 20 20 23 | 20 50 72 65 66 6f 72 6d | #| Preform|
|00003450| 61 74 74 65 64 20 6f 62 | 6a 65 63 74 20 68 61 73 |atted ob|ject has|
|00003460| 20 6f 6e 65 20 61 74 74 | 72 69 62 75 74 65 20 69 | one att|ribute i|
|00003470| 6e 20 69 74 73 20 44 69 | 73 70 6c 61 79 65 64 5f |n its Di|splayed_|
|00003480| 41 74 74 72 69 62 75 74 | 65 73 0a 20 20 20 20 20 |Attribut|es. |
|00003490| 20 20 20 20 23 20 6c 69 | 73 74 2c 20 22 57 49 44 | # li|st, "WID|
|000034a0| 54 48 22 2e 20 20 49 66 | 20 61 20 50 72 65 66 6f |TH". If| a Prefo|
|000034b0| 72 6d 61 74 74 65 64 20 | 6f 62 6a 65 63 74 20 69 |rmatted |object i|
|000034c0| 73 20 63 72 65 61 74 65 | 64 20 77 69 74 68 20 61 |s create|d with a|
|000034d0| 6e 0a 20 20 20 20 20 20 | 20 20 20 23 20 7b 41 74 |n. | # {At|
|000034e0| 74 72 69 62 75 74 65 73 | 7d 20 68 61 73 68 20 3d |tributes|} hash =|
|000034f0| 20 7b 27 57 49 44 54 48 | 27 2c 27 38 30 27 2c 27 | {'WIDTH|','80','|
|00003500| 4e 41 4d 45 27 2c 27 42 | 6f 62 27 7d 2c 20 6f 6e |NAME','B|ob'}, on|
|00003510| 6c 79 20 74 68 65 20 57 | 49 44 54 48 0a 20 20 20 |ly the W|IDTH. |
|00003520| 20 20 20 20 20 20 23 20 | 61 74 74 72 69 62 75 74 | # |attribut|
|00003530| 65 20 77 69 6c 6c 20 61 | 63 74 75 61 6c 6c 79 20 |e will a|ctually |
|00003540| 62 65 20 6f 75 74 70 75 | 74 2e 20 20 54 68 65 20 |be outpu|t. The |
|00003550| 72 65 73 75 6c 74 20 77 | 6f 75 6c 64 20 6c 6f 6f |result w|ould loo|
|00003560| 6b 20 6c 69 6b 65 20 74 | 68 69 73 3a 0a 20 20 20 |k like t|his:. |
|00003570| 20 20 20 20 20 20 23 20 | 3c 50 52 45 20 57 49 44 | # |<PRE WID|
|00003580| 54 48 3d 22 38 30 22 3e | 20 2e 2e 2e 20 3c 2f 50 |TH="80">| ... </P|
|00003590| 52 45 3e 0a 0a 20 20 20 | 20 20 20 20 20 20 23 20 |RE>.. | # |
|000035a0| 41 20 72 65 66 65 72 65 | 6e 63 65 20 74 6f 20 74 |A refere|nce to t|
|000035b0| 68 65 20 6f 62 6a 65 63 | 74 27 73 20 70 61 72 65 |he objec|t's pare|
|000035c0| 6e 74 2c 20 69 66 20 6b | 6e 6f 77 6e 2e 20 7b 50 |nt, if k|nown. {P|
|000035d0| 61 72 65 6e 74 7d 0a 0a | 20 20 20 20 20 20 20 20 |arent}..| |
|000035e0| 20 23 20 41 20 6c 69 73 | 74 20 6f 66 20 72 65 66 | # A lis|t of ref|
|000035f0| 65 72 65 6e 63 65 73 20 | 74 6f 20 61 6c 6c 20 6f |erences |to all o|
|00003600| 66 20 74 68 65 20 6f 62 | 6a 65 63 74 27 73 20 63 |f the ob|ject's c|
|00003610| 68 69 6c 64 72 65 6e 2c | 20 69 66 20 61 6e 79 2e |hildren,| if any.|
|00003620| 20 0a 20 20 20 20 20 20 | 20 20 20 23 20 7b 43 68 | . | # {Ch|
|00003630| 69 6c 64 72 65 6e 7d 0a | 0a 20 20 20 20 20 20 20 |ildren}.|. |
|00003640| 20 20 23 20 41 20 6d 65 | 74 68 6f 64 20 66 6f 72 | # A me|thod for|
|00003650| 20 63 72 65 61 74 69 6e | 67 20 6f 75 74 70 75 74 | creatin|g output|
|00003660| 20 74 6f 20 61 6e 20 48 | 54 4d 4c 20 73 74 72 65 | to an H|TML stre|
|00003670| 61 6d 2c 20 63 61 6c 6c | 65 64 20 22 64 69 73 70 |am, call|ed "disp|
|00003680| 6c 61 79 22 2e 0a 0a 20 | 20 70 61 63 6b 61 67 65 |lay"... | package|
|00003690| 20 48 54 4d 4c 3a 3a 42 | 61 73 65 3a 3a 48 54 4d | HTML::B|ase::HTM|
|000036a0| 4c 4f 62 6a 65 63 74 3b | 0a 20 20 7b 0a 0a 20 20 |LObject;|. {.. |
|000036b0| 20 20 23 20 48 54 4d 4c | 4f 62 6a 65 63 74 20 63 | # HTML|Object c|
|000036c0| 6f 6e 73 74 72 75 63 74 | 6f 72 2e 20 20 54 68 69 |onstruct|or. Thi|
|000036d0| 73 20 72 6f 75 74 69 6e | 65 20 74 61 6b 65 73 20 |s routin|e takes |
|000036e0| 61 20 6c 69 73 74 20 6f | 66 20 61 72 67 75 6d 65 |a list o|f argume|
|000036f0| 6e 74 73 2c 20 74 68 65 | 0a 20 20 20 20 23 20 66 |nts, the|. # f|
|00003700| 69 72 73 74 20 6f 66 20 | 77 68 69 63 68 20 69 73 |irst of |which is|
|00003710| 20 61 73 73 75 6d 65 64 | 20 74 6f 20 62 65 20 74 | assumed| to be t|
|00003720| 68 65 20 6f 62 6a 65 63 | 74 20 74 79 70 65 20 28 |he objec|t type (|
|00003730| 48 54 4d 4c 4f 62 6a 65 | 63 74 2c 20 6f 66 20 63 |HTMLObje|ct, of c|
|00003740| 6f 75 72 73 65 21 29 2e | 0a 20 20 20 20 23 20 41 |ourse!).|. # A|
|00003750| 6e 79 74 68 69 6e 67 20 | 61 66 74 65 72 20 74 68 |nything |after th|
|00003760| 65 20 74 79 70 65 20 69 | 73 20 61 73 73 75 6d 65 |e type i|s assume|
|00003770| 64 20 74 6f 20 62 65 20 | 61 20 6c 69 73 74 20 6f |d to be |a list o|
|00003780| 66 20 6b 65 79 2f 76 61 | 6c 75 65 20 70 61 69 72 |f key/va|lue pair|
|00003790| 73 2e 0a 20 20 20 20 23 | 20 54 68 65 73 65 20 61 |s.. #| These a|
|000037a0| 72 65 20 73 65 74 20 69 | 6e 74 6f 20 74 68 65 20 |re set i|nto the |
|000037b0| 41 74 74 72 69 62 75 74 | 65 73 20 68 61 73 68 2e |Attribut|es hash.|
|000037c0| 20 20 4e 6f 74 65 20 74 | 68 61 74 20 6e 6f 20 63 | Note t|hat no c|
|000037d0| 68 65 63 6b 69 6e 67 20 | 69 73 20 64 6f 6e 65 0a |hecking |is done.|
|000037e0| 20 20 20 20 23 20 74 6f | 20 73 65 65 20 69 66 20 | # to| see if |
|000037f0| 74 68 65 73 65 20 61 72 | 65 20 22 6c 65 67 61 6c |these ar|e "legal|
|00003800| 22 20 61 74 74 72 69 62 | 75 74 65 73 2e 20 20 59 |" attrib|utes. Y|
|00003810| 6f 75 20 63 61 6e 2c 20 | 74 68 65 72 65 66 6f 72 |ou can, |therefor|
|00003820| 65 2c 20 73 65 74 20 61 | 6e 79 0a 20 20 20 20 23 |e, set a|ny. #|
|00003830| 20 61 74 74 72 69 62 75 | 74 65 73 20 79 6f 75 20 | attribu|tes you |
|00003840| 77 61 6e 74 20 73 69 6d | 70 6c 79 20 62 79 20 70 |want sim|ply by p|
|00003850| 61 73 73 69 6e 67 20 74 | 68 65 6d 20 61 73 20 74 |assing t|hem as t|
|00003860| 68 65 20 66 69 6e 61 6c | 20 70 61 72 61 6d 65 74 |he final| paramet|
|00003870| 65 72 73 20 74 6f 0a 20 | 20 20 20 23 20 74 68 65 |ers to. | # the|
|00003880| 20 63 6f 6e 73 74 72 75 | 63 74 6f 72 20 6f 66 20 | constru|ctor of |
|00003890| 61 6e 79 20 48 54 4d 4c | 20 6f 62 6a 65 63 74 2e |any HTML| object.|
|000038a0| 0a 0a 20 20 20 20 23 20 | 4f 6e 65 20 73 70 65 63 |.. # |One spec|
|000038b0| 69 61 6c 20 61 74 74 72 | 69 62 75 74 65 20 69 73 |ial attr|ibute is|
|000038c0| 20 70 6f 73 73 69 62 6c | 65 20 66 6f 72 20 61 6c | possibl|e for al|
|000038d0| 6c 20 48 54 4d 4c 4f 62 | 6a 65 63 74 73 3a 20 4e |l HTMLOb|jects: N|
|000038e0| 6f 50 61 72 65 6e 74 2e | 20 20 49 66 0a 20 20 20 |oParent.| If. |
|000038f0| 20 23 20 73 65 74 20 74 | 6f 20 73 6f 6d 65 74 68 | # set t|o someth|
|00003900| 69 6e 67 20 28 61 6e 79 | 74 68 69 6e 67 21 29 2c |ing (any|thing!),|
|00003910| 20 74 68 65 6e 20 74 68 | 65 20 6f 62 6a 65 63 74 | then th|e object|
|00003920| 20 63 72 65 61 74 65 64 | 20 77 69 6c 6c 20 6e 6f | created| will no|
|00003930| 74 20 62 65 20 6c 69 6e | 6b 65 64 0a 20 20 20 20 |t be lin|ked. |
|00003940| 23 20 74 6f 20 74 68 65 | 20 43 75 72 72 65 6e 74 |# to the| Current|
|00003950| 4f 62 6a 65 63 74 2e 20 | 20 54 68 69 73 20 61 6c |Object. | This al|
|00003960| 6c 6f 77 73 20 74 68 65 | 20 63 72 65 61 74 69 6f |lows the| creatio|
|00003970| 6e 20 6f 66 20 22 70 72 | 6f 74 6f 74 79 70 65 22 |n of "pr|ototype"|
|00003980| 20 48 54 4d 4c 0a 20 20 | 20 20 23 20 6f 62 6a 65 | HTML. | # obje|
|00003990| 63 74 73 20 77 68 69 63 | 68 20 63 61 6e 20 62 65 |cts whic|h can be|
|000039a0| 20 63 61 63 68 65 64 20 | 75 6e 74 69 6c 20 72 65 | cached |until re|
|000039b0| 61 64 79 20 74 6f 20 75 | 73 65 20 69 6e 20 74 68 |ady to u|se in th|
|000039c0| 65 20 22 72 65 61 6c 22 | 20 6f 62 6a 65 63 74 20 |e "real"| object |
|000039d0| 74 72 65 65 2e 0a 0a 20 | 20 20 20 73 75 62 20 6e |tree... | sub n|
|000039e0| 65 77 20 7b 20 20 20 20 | 20 20 20 20 20 20 20 20 |ew { | |
|000039f0| 20 20 20 20 20 20 0a 20 | 20 20 20 20 20 48 54 4d | . | HTM|
|00003a00| 4c 3a 3a 42 61 73 65 3a | 3a 5f 73 68 6f 77 5f 73 |L::Base:|:_show_s|
|00003a10| 75 62 5f 65 6e 74 72 79 | 20 28 40 5f 29 3b 0a 20 |ub_entry| (@_);. |
|00003a20| 20 20 20 20 20 6d 79 20 | 24 73 65 6c 66 20 3d 20 | my |$self = |
|00003a30| 7b 7d 3b 20 20 20 20 20 | 20 20 20 0a 20 20 20 20 |{}; | . |
|00003a40| 20 20 6d 79 20 24 74 79 | 70 65 20 3d 20 73 68 69 | my $ty|pe = shi|
|00003a50| 66 74 3b 20 20 20 20 20 | 20 20 20 0a 20 20 20 20 |ft; | . |
|00003a60| 20 20 24 73 65 6c 66 2d | 3e 7b 41 74 74 72 69 62 | $self-|>{Attrib|
|00003a70| 75 74 65 73 7d 20 3d 20 | 7b 7d 3b 20 20 20 20 20 |utes} = |{}; |
|00003a80| 20 20 20 0a 20 20 20 20 | 20 20 6d 79 20 28 24 6b | . | my ($k|
|00003a90| 65 79 2c 20 24 76 61 6c | 75 65 29 3b 0a 20 20 20 |ey, $val|ue);. |
|00003aa0| 20 20 20 77 68 69 6c 65 | 20 28 40 5f 29 20 7b 0a | while| (@_) {.|
|00003ab0| 20 20 20 20 20 20 20 20 | 24 6b 65 79 20 3d 20 73 | |$key = s|
|00003ac0| 68 69 66 74 3b 0a 20 20 | 20 20 20 20 20 20 24 76 |hift;. | $v|
|00003ad0| 61 6c 75 65 20 3d 20 73 | 68 69 66 74 3b 0a 20 20 |alue = s|hift;. |
|00003ae0| 20 20 20 20 20 20 69 66 | 20 28 24 44 65 62 75 67 | if| ($Debug|
|00003af0| 29 20 7b 20 70 72 69 6e | 74 20 28 53 54 44 45 52 |) { prin|t (STDER|
|00003b00| 52 20 22 48 54 4d 4c 3a | 3a 42 61 73 65 3a 3a 48 |R "HTML:|:Base::H|
|00003b10| 54 4d 4c 4f 62 6a 65 63 | 74 3a 3a 6e 65 77 20 73 |TMLObjec|t::new s|
|00003b20| 65 74 74 69 6e 67 20 61 | 74 74 72 69 62 75 74 65 |etting a|ttribute|
|00003b30| 20 24 6b 65 79 20 3d 20 | 24 76 61 6c 75 65 5c 6e | $key = |$value\n|
|00003b40| 22 29 7d 0a 20 20 20 20 | 20 20 20 20 24 73 65 6c |")}. | $sel|
|00003b50| 66 2d 3e 7b 41 74 74 72 | 69 62 75 74 65 73 7d 2d |f->{Attr|ibutes}-|
|00003b60| 3e 7b 24 6b 65 79 7d 20 | 3d 20 24 76 61 6c 75 65 |>{$key} |= $value|
|00003b70| 3b 20 20 20 20 20 20 20 | 20 0a 20 20 20 20 20 20 |; | . |
|00003b80| 7d 0a 20 20 20 20 20 20 | 62 6c 65 73 73 20 24 73 |}. |bless $s|
|00003b90| 65 6c 66 3b 0a 20 20 20 | 20 20 20 69 66 20 28 21 |elf;. | if (!|
|00003ba0| 20 24 73 65 6c 66 2d 3e | 7b 41 74 74 72 69 62 75 | $self->|{Attribu|
|00003bb0| 74 65 73 7d 2d 3e 7b 27 | 4e 6f 50 61 72 65 6e 74 |tes}->{'|NoParent|
|00003bc0| 27 7d 29 20 7b 0a 20 20 | 20 20 20 20 20 20 69 66 |'}) {. | if|
|00003bd0| 20 28 24 44 65 62 75 67 | 29 20 7b 70 72 69 6e 74 | ($Debug|) {print|
|00003be0| 20 53 54 44 45 52 52 20 | 22 48 54 4d 4c 3a 3a 42 | STDERR |"HTML::B|
|00003bf0| 61 73 65 3a 3a 48 54 4d | 4c 4f 62 6a 65 63 74 3a |ase::HTM|LObject:|
|00003c00| 3a 6e 65 77 3a 20 6c 69 | 6e 6b 69 6e 67 5c 6e 20 |:new: li|nking\n |
|00003c10| 20 24 73 65 6c 66 20 74 | 6f 20 43 75 72 72 65 6e | $self t|o Curren|
|00003c20| 74 4f 62 6a 65 63 74 20 | 61 73 20 63 68 69 6c 64 |tObject |as child|
|00003c30| 2e 5c 6e 22 7d 0a 09 6c | 69 6e 6b 5f 74 6f 5f 63 |.\n"}..l|ink_to_c|
|00003c40| 75 72 72 65 6e 74 20 24 | 73 65 6c 66 3b 0a 20 20 |urrent $|self;. |
|00003c50| 20 20 20 20 7d 0a 20 20 | 20 20 20 20 24 73 65 6c | }. | $sel|
|00003c60| 66 3b 0a 20 20 20 20 7d | 20 23 20 65 6e 64 20 73 |f;. }| # end s|
|00003c70| 75 62 20 6e 65 77 0a 0a | 20 20 20 20 23 20 6c 69 |ub new..| # li|
|00003c80| 6e 6b 5f 74 6f 5f 63 75 | 72 72 65 6e 74 20 69 73 |nk_to_cu|rrent is|
|00003c90| 20 63 61 6c 6c 65 64 20 | 62 79 20 74 68 65 20 48 | called |by the H|
|00003ca0| 54 4d 4c 4f 62 6a 65 63 | 74 20 63 6f 6e 73 74 72 |TMLObjec|t constr|
|00003cb0| 75 63 74 6f 72 2e 20 20 | 49 74 20 70 6f 69 6e 74 |uctor. |It point|
|00003cc0| 73 20 74 68 65 0a 20 20 | 20 20 23 20 7b 50 61 72 |s the. | # {Par|
|00003cd0| 65 6e 74 7d 20 72 65 66 | 20 6f 66 20 74 68 65 20 |ent} ref| of the |
|00003ce0| 6e 65 77 20 48 54 4d 4c | 4f 62 6a 65 63 74 20 74 |new HTML|Object t|
|00003cf0| 6f 20 74 68 65 20 43 75 | 72 72 65 6e 74 4f 62 6a |o the Cu|rrentObj|
|00003d00| 65 63 74 2c 20 63 72 65 | 61 74 65 73 20 61 6e 0a |ect, cre|ates an.|
|00003d10| 20 20 20 20 23 20 65 6d | 70 74 79 20 7b 43 68 69 | # em|pty {Chi|
|00003d20| 6c 64 72 65 6e 7d 20 61 | 72 72 61 79 20 66 6f 72 |ldren} a|rray for|
|00003d30| 20 74 68 65 20 6e 65 77 | 20 6f 62 6a 65 63 74 2c | the new| object,|
|00003d40| 20 74 68 65 6e 20 6d 61 | 6b 65 73 20 74 68 65 20 | then ma|kes the |
|00003d50| 6e 65 77 20 6f 62 6a 65 | 63 74 0a 20 20 20 20 23 |new obje|ct. #|
|00003d60| 20 74 68 65 20 43 75 72 | 72 65 6e 74 4f 62 6a 65 | the Cur|rentObje|
|00003d70| 63 74 2e 0a 0a 20 20 20 | 20 73 75 62 20 6c 69 6e |ct... | sub lin|
|00003d80| 6b 5f 74 6f 5f 63 75 72 | 72 65 6e 74 20 7b 0a 20 |k_to_cur|rent {. |
|00003d90| 20 20 20 20 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | HTM|L::Base:|
|00003da0| 3a 5f 73 68 6f 77 5f 73 | 75 62 5f 65 6e 74 72 79 |:_show_s|ub_entry|
|00003db0| 20 28 40 5f 29 3b 0a 20 | 20 20 20 20 20 6d 79 20 | (@_);. | my |
|00003dc0| 24 73 65 6c 66 20 3d 20 | 73 68 69 66 74 3b 20 0a |$self = |shift; .|
|00003dd0| 20 20 20 20 20 20 69 66 | 20 28 24 44 65 62 75 67 | if| ($Debug|
|00003de0| 29 20 7b 20 0a 20 20 20 | 20 20 20 20 20 70 72 69 |) { . | pri|
|00003df0| 6e 74 20 28 53 54 44 45 | 52 52 20 22 5c 6e 48 54 |nt (STDE|RR "\nHT|
|00003e00| 4d 4c 3a 3a 42 61 73 65 | 3a 3a 48 54 4d 4c 4f 62 |ML::Base|::HTMLOb|
|00003e10| 6a 65 63 74 3a 3a 6c 69 | 6e 6b 5f 74 6f 5f 63 75 |ject::li|nk_to_cu|
|00003e20| 72 72 65 6e 74 3a 5c 6e | 20 20 73 65 6c 66 20 3d |rrent:\n| self =|
|00003e30| 20 24 73 65 6c 66 2c 5c | 6e 20 20 43 75 72 72 65 | $self,\|n Curre|
|00003e40| 6e 74 4f 62 6a 65 63 74 | 20 3d 20 24 43 75 72 72 |ntObject| = $Curr|
|00003e50| 65 6e 74 4f 62 6a 65 63 | 74 5c 6e 22 29 3b 0a 20 |entObjec|t\n");. |
|00003e60| 20 20 20 20 20 7d 0a 20 | 20 20 20 20 20 69 66 20 | }. | if |
|00003e70| 28 24 43 75 72 72 65 6e | 74 4f 62 6a 65 63 74 29 |($Curren|tObject)|
|00003e80| 20 7b 0a 20 20 20 20 20 | 20 20 20 24 73 65 6c 66 | {. | $self|
|00003e90| 2d 3e 7b 27 43 68 69 6c | 64 72 65 6e 27 7d 20 3d |->{'Chil|dren'} =|
|00003ea0| 20 5b 5d 3b 0a 20 20 20 | 20 20 20 20 20 48 54 4d | [];. | HTM|
|00003eb0| 4c 3a 3a 42 61 73 65 3a | 3a 6c 69 6e 6b 5f 74 6f |L::Base:|:link_to|
|00003ec0| 5f 70 61 72 65 6e 74 20 | 28 24 73 65 6c 66 2c 20 |_parent |($self, |
|00003ed0| 24 43 75 72 72 65 6e 74 | 4f 62 6a 65 63 74 29 3b |$Current|Object);|
|00003ee0| 0a 20 20 20 20 20 20 7d | 0a 20 20 20 20 20 20 24 |. }|. $|
|00003ef0| 43 75 72 72 65 6e 74 4f | 62 6a 65 63 74 20 3d 20 |CurrentO|bject = |
|00003f00| 24 73 65 6c 66 3b 0a 20 | 20 20 20 7d 0a 0a 20 20 |$self;. | }.. |
|00003f10| 20 20 23 20 6d 61 6b 65 | 5f 63 75 72 72 65 6e 74 | # make|_current|
|00003f20| 20 74 61 6b 65 73 20 61 | 20 72 65 66 65 72 65 6e | takes a| referen|
|00003f30| 63 65 20 74 6f 20 61 6e | 79 20 48 54 4d 4c 20 6f |ce to an|y HTML o|
|00003f40| 62 6a 65 63 74 20 61 6e | 64 20 74 68 65 6e 20 6d |bject an|d then m|
|00003f50| 61 6b 65 73 20 74 68 61 | 74 0a 20 20 20 20 23 20 |akes tha|t. # |
|00003f60| 6f 62 6a 65 63 74 20 74 | 68 65 20 24 43 75 72 72 |object t|he $Curr|
|00003f70| 65 6e 74 4f 62 6a 65 63 | 74 2e 20 20 54 68 69 73 |entObjec|t. This|
|00003f80| 20 69 73 20 75 73 65 66 | 75 6c 20 66 6f 72 20 72 | is usef|ul for r|
|00003f90| 65 6d 65 6d 62 65 72 69 | 6e 67 20 61 20 70 6f 69 |ememberi|ng a poi|
|00003fa0| 6e 74 20 69 6e 20 61 6e | 0a 20 20 20 20 23 20 48 |nt in an|. # H|
|00003fb0| 54 4d 4c 20 68 69 65 72 | 61 72 63 68 79 20 74 68 |TML hier|archy th|
|00003fc0| 61 74 20 79 6f 75 20 77 | 69 73 68 20 74 6f 20 72 |at you w|ish to r|
|00003fd0| 65 74 75 72 6e 20 74 6f | 20 71 75 69 63 6b 6c 79 |eturn to| quickly|
|00003fe0| 2e 20 20 53 69 6d 70 6c | 79 20 73 74 61 73 68 20 |. Simpl|y stash |
|00003ff0| 61 0a 20 20 20 20 23 20 | 72 65 66 65 72 65 6e 63 |a. # |referenc|
|00004000| 65 20 74 6f 20 74 68 65 | 20 64 65 73 69 72 65 64 |e to the| desired|
|00004010| 20 6f 62 6a 65 63 74 20 | 69 6e 20 61 20 73 63 61 | object |in a sca|
|00004020| 6c 61 72 20 76 61 72 69 | 61 62 6c 65 2e 20 20 54 |lar vari|able. T|
|00004030| 68 65 6e 2c 20 77 68 65 | 6e 20 79 6f 75 0a 20 20 |hen, whe|n you. |
|00004040| 20 20 23 20 77 61 6e 74 | 20 74 68 61 74 20 6f 62 | # want| that ob|
|00004050| 6a 65 63 74 20 74 6f 20 | 62 65 20 63 75 72 72 65 |ject to |be curre|
|00004060| 6e 74 20 61 67 61 69 6e | 2c 20 63 61 6c 6c 20 24 |nt again|, call $|
|00004070| 6f 62 6a 72 65 66 2d 3e | 6d 61 6b 65 2d 63 75 72 |objref->|make-cur|
|00004080| 72 65 6e 74 2e 0a 0a 20 | 20 20 20 73 75 62 20 6d |rent... | sub m|
|00004090| 61 6b 65 5f 63 75 72 72 | 65 6e 74 20 7b 0a 20 20 |ake_curr|ent {. |
|000040a0| 20 20 20 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | HTML|::Base::|
|000040b0| 5f 73 68 6f 77 5f 73 75 | 62 5f 65 6e 74 72 79 20 |_show_su|b_entry |
|000040c0| 28 40 5f 29 3b 0a 20 20 | 20 20 20 20 6d 79 20 24 |(@_);. | my $|
|000040d0| 73 65 6c 66 20 3d 20 73 | 68 69 66 74 3b 0a 20 20 |self = s|hift;. |
|000040e0| 20 20 20 20 69 66 20 28 | 24 73 65 6c 66 29 20 7b | if (|$self) {|
|000040f0| 20 24 43 75 72 72 65 6e | 74 4f 62 6a 65 63 74 20 | $Curren|tObject |
|00004100| 3d 20 24 73 65 6c 66 3b | 20 7d 0a 20 20 20 20 7d |= $self;| }. }|
|00004110| 20 23 20 65 6e 64 20 73 | 75 62 20 65 6e 64 5f 61 | # end s|ub end_a|
|00004120| 6c 6c 5f 6f 62 6a 65 63 | 74 73 0a 0a 20 20 20 20 |ll_objec|ts.. |
|00004130| 23 20 65 6e 64 5f 6f 62 | 6a 65 63 74 20 69 73 20 |# end_ob|ject is |
|00004140| 69 64 65 6e 74 69 63 61 | 6c 20 74 6f 20 48 54 4d |identica|l to HTM|
|00004150| 4c 3a 3a 42 61 73 65 3a | 3a 65 6e 64 5f 6f 62 6a |L::Base:|:end_obj|
|00004160| 65 63 74 2e 20 20 57 65 | 20 6a 75 73 74 20 69 6e |ect. We| just in|
|00004170| 63 6c 75 64 65 20 0a 20 | 20 20 20 23 20 69 74 20 |clude . | # it |
|00004180| 68 65 72 65 20 73 6f 20 | 74 68 61 74 20 61 6e 20 |here so |that an |
|00004190| 6f 62 6a 65 63 74 20 63 | 61 6e 20 65 6e 64 20 69 |object c|an end i|
|000041a0| 74 73 65 6c 66 20 76 69 | 61 20 74 68 65 20 24 6f |tself vi|a the $o|
|000041b0| 62 6a 72 65 66 2d 3e 65 | 6e 64 5f 6f 62 6a 65 63 |bjref->e|nd_objec|
|000041c0| 74 20 0a 20 20 20 20 23 | 20 73 79 6e 74 61 78 2e |t . #| syntax.|
|000041d0| 0a 0a 20 20 20 20 73 75 | 62 20 65 6e 64 5f 6f 62 |.. su|b end_ob|
|000041e0| 6a 65 63 74 20 7b 0a 20 | 20 20 20 20 20 48 54 4d |ject {. | HTM|
|000041f0| 4c 3a 3a 42 61 73 65 3a | 3a 5f 73 68 6f 77 5f 73 |L::Base:|:_show_s|
|00004200| 75 62 5f 65 6e 74 72 79 | 20 28 40 5f 29 3b 0a 20 |ub_entry| (@_);. |
|00004210| 20 20 20 20 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | HTM|L::Base:|
|00004220| 3a 65 6e 64 5f 6f 62 6a | 65 63 74 20 28 40 5f 29 |:end_obj|ect (@_)|
|00004230| 3b 0a 20 20 20 20 7d 0a | 0a 20 20 20 20 23 20 72 |;. }.|. # r|
|00004240| 65 61 6c 69 7a 65 20 69 | 73 20 6a 75 73 74 20 61 |ealize i|s just a|
|00004250| 6e 6f 74 68 65 72 20 6e | 61 6d 65 20 66 6f 72 20 |nother n|ame for |
|00004260| 65 78 65 63 75 74 65 2e | 0a 0a 20 20 20 20 73 75 |execute.|.. su|
|00004270| 62 20 72 65 61 6c 69 7a | 65 20 7b 0a 20 20 20 20 |b realiz|e {. |
|00004280| 20 20 65 78 65 63 75 74 | 65 28 40 5f 29 3b 0a 20 | execut|e(@_);. |
|00004290| 20 20 20 7d 0a 0a 20 20 | 20 20 23 20 65 78 65 63 | }.. | # exec|
|000042a0| 75 74 65 20 69 73 20 74 | 68 65 20 6d 65 74 68 6f |ute is t|he metho|
|000042b0| 64 20 74 6f 20 63 61 6c | 6c 20 77 68 65 6e 20 79 |d to cal|l when y|
|000042c0| 6f 75 20 77 61 6e 74 20 | 61 20 74 72 65 65 20 6f |ou want |a tree o|
|000042d0| 66 20 48 54 4d 4c 20 6f | 62 6a 65 63 74 73 20 74 |f HTML o|bjects t|
|000042e0| 6f 0a 20 20 20 20 23 20 | 64 69 73 70 6c 61 79 20 |o. # |display |
|000042f0| 74 68 65 6d 73 65 6c 76 | 65 73 2e 20 20 54 68 65 |themselv|es. The|
|00004300| 20 6f 62 6a 65 63 74 20 | 70 61 73 73 65 64 20 74 | object |passed t|
|00004310| 6f 20 65 78 65 63 75 74 | 65 20 69 73 20 22 65 78 |o execut|e is "ex|
|00004320| 65 63 75 74 65 64 22 2c | 20 61 6c 6f 6e 67 0a 20 |ecuted",| along. |
|00004330| 20 20 20 23 20 77 69 74 | 68 20 61 6c 6c 20 6f 66 | # wit|h all of|
|00004340| 20 69 74 73 20 63 68 69 | 6c 64 72 65 6e 20 28 62 | its chi|ldren (b|
|00004350| 75 74 20 6e 6f 74 20 69 | 74 73 20 61 6e 63 65 73 |ut not i|ts ances|
|00004360| 74 65 72 73 29 2e 20 20 | 44 69 73 70 6c 61 79 20 |ters). |Display |
|00004370| 69 73 20 64 6f 6e 65 0a | 20 20 20 20 23 20 69 6e |is done.| # in|
|00004380| 20 74 77 6f 20 70 61 73 | 73 65 73 20 66 6f 72 20 | two pas|ses for |
|00004390| 65 61 63 68 20 6f 62 6a | 65 63 74 2e 20 20 46 69 |each obj|ect. Fi|
|000043a0| 72 73 74 2c 20 74 68 65 | 20 6f 62 6a 65 63 74 27 |rst, the| object'|
|000043b0| 73 20 64 69 73 70 6c 61 | 79 20 6d 65 74 68 6f 64 |s displa|y method|
|000043c0| 20 69 73 0a 20 20 20 20 | 23 20 63 61 6c 6c 65 64 | is. |# called|
|000043d0| 20 77 69 74 68 20 74 68 | 65 20 70 61 72 61 6d 65 | with th|e parame|
|000043e0| 74 65 72 20 22 6f 70 65 | 6e 22 2e 20 20 54 68 69 |ter "ope|n". Thi|
|000043f0| 73 20 74 65 6c 6c 73 20 | 74 68 65 20 6f 62 6a 65 |s tells |the obje|
|00004400| 63 74 20 74 6f 20 22 6f | 70 65 6e 22 0a 20 20 20 |ct to "o|pen". |
|00004410| 20 23 20 77 68 61 74 65 | 76 65 72 20 48 54 4d 4c | # whate|ver HTML|
|00004420| 20 74 61 67 20 69 74 20 | 75 73 65 73 2e 20 20 57 | tag it |uses. W|
|00004430| 68 65 6e 2c 20 6c 61 74 | 65 72 2c 20 74 68 65 20 |hen, lat|er, the |
|00004440| 6f 62 6a 65 63 74 27 73 | 20 64 69 73 70 6c 61 79 |object's| display|
|00004450| 20 6d 65 74 68 6f 64 20 | 69 73 0a 20 20 20 20 23 | method |is. #|
|00004460| 20 63 61 6c 6c 65 64 20 | 61 67 61 69 6e 20 77 69 | called |again wi|
|00004470| 74 68 20 74 68 65 20 22 | 63 6c 6f 73 65 22 20 70 |th the "|close" p|
|00004480| 61 72 61 6d 65 74 65 72 | 2c 20 69 74 20 77 69 6c |arameter|, it wil|
|00004490| 6c 20 6f 75 74 70 75 74 | 20 77 68 61 74 65 76 65 |l output| whateve|
|000044a0| 72 20 69 73 0a 20 20 20 | 20 23 20 6e 65 65 64 65 |r is. | # neede|
|000044b0| 64 20 74 6f 20 63 6f 6d | 70 6c 65 74 65 20 74 68 |d to com|plete th|
|000044c0| 65 20 48 54 4d 4c 20 74 | 61 67 2e 20 20 46 6f 72 |e HTML t|ag. For|
|000044d0| 20 65 78 61 6d 70 6c 65 | 2c 20 74 68 65 20 42 6f | example|, the Bo|
|000044e0| 6c 64 20 6f 62 6a 65 63 | 74 20 6f 75 74 70 75 74 |ld objec|t output|
|000044f0| 73 0a 20 20 20 20 23 20 | 22 3c 42 3e 22 20 6f 6e |s. # |"<B>" on|
|00004500| 20 6f 70 65 6e 2c 20 61 | 6e 64 20 22 3c 2f 42 3e | open, a|nd "</B>|
|00004510| 22 20 6f 6e 20 63 6c 6f | 73 65 2e 0a 0a 20 20 20 |" on clo|se... |
|00004520| 20 23 20 54 68 65 20 61 | 6c 67 6f 72 69 74 68 6d | # The a|lgorithm|
|00004530| 20 66 6f 72 20 65 78 65 | 63 75 74 65 20 69 73 20 | for exe|cute is |
|00004540| 73 69 6d 70 6c 65 3a 20 | 44 69 73 70 6c 61 79 20 |simple: |Display |
|00004550| 6d 79 20 73 65 6c 66 20 | 77 69 74 68 20 22 6f 70 |my self |with "op|
|00004560| 65 6e 22 2c 20 74 68 65 | 6e 0a 20 20 20 20 23 20 |en", the|n. # |
|00004570| 63 61 6c 6c 20 65 78 65 | 63 75 74 65 20 72 65 63 |call exe|cute rec|
|00004580| 75 72 73 69 76 65 6c 79 | 20 6f 6e 63 65 20 66 6f |ursively| once fo|
|00004590| 72 20 65 61 63 68 20 6f | 66 20 6d 79 20 63 68 69 |r each o|f my chi|
|000045a0| 6c 64 72 65 6e 2c 20 74 | 68 65 6e 20 64 69 73 70 |ldren, t|hen disp|
|000045b0| 6c 61 79 20 0a 20 20 20 | 20 23 20 6d 79 73 65 6c |lay . | # mysel|
|000045c0| 66 20 77 69 74 68 20 22 | 63 6c 6f 73 65 22 2e 0a |f with "|close"..|
|000045d0| 0a 20 20 20 20 73 75 62 | 20 65 78 65 63 75 74 65 |. sub| execute|
|000045e0| 20 7b 0a 20 20 20 20 20 | 20 48 54 4d 4c 3a 3a 42 | {. | HTML::B|
|000045f0| 61 73 65 3a 3a 5f 73 68 | 6f 77 5f 73 75 62 5f 65 |ase::_sh|ow_sub_e|
|00004600| 6e 74 72 79 20 28 40 5f | 29 3b 0a 20 20 20 20 20 |ntry (@_|);. |
|00004610| 20 6d 79 20 24 73 65 6c | 66 20 3d 20 73 68 69 66 | my $sel|f = shif|
|00004620| 74 3b 20 0a 20 20 20 20 | 20 20 6d 79 20 24 63 68 |t; . | my $ch|
|00004630| 69 6c 64 3b 0a 20 20 20 | 20 20 20 69 66 20 28 24 |ild;. | if ($|
|00004640| 44 65 62 75 67 29 20 7b | 70 72 69 6e 74 20 53 54 |Debug) {|print ST|
|00004650| 44 45 52 52 20 22 5c 6e | 48 54 4d 4c 3a 3a 42 61 |DERR "\n|HTML::Ba|
|00004660| 73 65 3a 3a 48 54 4d 4c | 4f 62 6a 65 63 74 3a 3a |se::HTML|Object::|
|00004670| 65 78 65 63 75 74 65 3a | 20 73 65 6c 66 20 3d 20 |execute:| self = |
|00004680| 24 73 65 6c 66 22 7d 0a | 20 20 20 20 20 20 69 66 |$self"}.| if|
|00004690| 20 28 21 20 24 73 65 6c | 66 29 20 7b 24 73 65 6c | (! $sel|f) {$sel|
|000046a0| 66 20 3d 20 66 69 6e 64 | 5f 74 6f 70 5f 6f 62 6a |f = find|_top_obj|
|000046b0| 65 63 74 20 28 24 43 75 | 72 72 65 6e 74 4f 62 6a |ect ($Cu|rrentObj|
|000046c0| 65 63 74 29 7d 0a 20 20 | 20 20 20 20 69 66 20 28 |ect)}. | if (|
|000046d0| 24 73 65 6c 66 29 20 7b | 0a 20 20 20 20 20 20 20 |$self) {|. |
|000046e0| 20 24 73 65 6c 66 2d 3e | 64 69 73 70 6c 61 79 28 | $self->|display(|
|000046f0| 22 6f 70 65 6e 22 29 3b | 0a 20 20 20 20 20 20 20 |"open");|. |
|00004700| 20 66 6f 72 65 61 63 68 | 20 24 63 68 69 6c 64 20 | foreach| $child |
|00004710| 28 40 7b 24 73 65 6c 66 | 2d 3e 7b 27 43 68 69 6c |(@{$self|->{'Chil|
|00004720| 64 72 65 6e 27 7d 7d 29 | 20 7b 0a 20 20 20 20 20 |dren'}})| {. |
|00004730| 20 20 20 20 20 24 63 68 | 69 6c 64 2d 3e 65 78 65 | $ch|ild->exe|
|00004740| 63 75 74 65 3b 0a 20 20 | 20 20 20 20 20 20 7d 0a |cute;. | }.|
|00004750| 20 20 20 20 20 20 20 20 | 24 73 65 6c 66 2d 3e 64 | |$self->d|
|00004760| 69 73 70 6c 61 79 28 22 | 63 6c 6f 73 65 22 29 3b |isplay("|close");|
|00004770| 0a 20 20 20 20 20 20 7d | 0a 20 20 20 20 7d 0a 0a |. }|. }..|
|00004780| 20 20 20 20 23 20 47 69 | 76 65 6e 20 61 20 72 65 | # Gi|ven a re|
|00004790| 66 65 72 65 6e 63 65 20 | 74 6f 20 61 6e 20 48 54 |ference |to an HT|
|000047a0| 4d 4c 20 4f 62 6a 65 63 | 74 2c 20 66 69 6e 64 5f |ML Objec|t, find_|
|000047b0| 74 6f 70 5f 6f 62 6a 65 | 63 74 20 72 65 74 75 72 |top_obje|ct retur|
|000047c0| 6e 73 20 61 20 72 65 66 | 65 72 65 6e 63 65 0a 20 |ns a ref|erence. |
|000047d0| 20 20 20 23 20 74 6f 20 | 74 68 65 20 6f 62 6a 65 | # to |the obje|
|000047e0| 63 74 20 77 68 69 63 68 | 20 69 73 20 74 68 65 20 |ct which| is the |
|000047f0| 67 69 76 65 6e 20 6f 62 | 6a 65 63 74 27 73 20 6d |given ob|ject's m|
|00004800| 6f 73 74 20 64 69 73 74 | 61 6e 74 20 72 65 6c 61 |ost dist|ant rela|
|00004810| 74 69 76 65 20 28 75 70 | 2d 77 69 73 65 2c 0a 20 |tive (up|-wise,. |
|00004820| 20 20 20 23 20 74 68 61 | 74 20 69 73 29 2e 0a 0a | # tha|t is)...|
|00004830| 20 20 20 20 73 75 62 20 | 66 69 6e 64 5f 74 6f 70 | sub |find_top|
|00004840| 5f 6f 62 6a 65 63 74 20 | 7b 0a 20 20 20 20 20 20 |_object |{. |
|00004850| 48 54 4d 4c 3a 3a 42 61 | 73 65 3a 3a 5f 73 68 6f |HTML::Ba|se::_sho|
|00004860| 77 5f 73 75 62 5f 65 6e | 74 72 79 20 28 40 5f 29 |w_sub_en|try (@_)|
|00004870| 3b 0a 20 20 20 20 20 20 | 6d 79 20 24 73 65 6c 66 |;. |my $self|
|00004880| 20 3d 20 73 68 69 66 74 | 3b 20 0a 20 20 20 20 20 | = shift|; . |
|00004890| 20 77 68 69 6c 65 20 28 | 24 73 65 6c 66 2d 3e 7b | while (|$self->{|
|000048a0| 27 50 61 72 65 6e 74 27 | 7d 29 20 7b 20 24 73 65 |'Parent'|}) { $se|
|000048b0| 6c 66 20 3d 20 24 73 65 | 6c 66 2d 3e 7b 27 50 61 |lf = $se|lf->{'Pa|
|000048c0| 72 65 6e 74 27 7d 20 7d | 0a 20 20 20 20 20 20 24 |rent'} }|. $|
|000048d0| 73 65 6c 66 3b 0a 20 20 | 20 20 7d 0a 0a 20 20 20 |self;. | }.. |
|000048e0| 20 23 20 6f 62 6a 65 63 | 74 5f 74 79 70 65 20 72 | # objec|t_type r|
|000048f0| 65 74 75 72 6e 73 20 74 | 68 65 20 73 69 6e 67 6c |eturns t|he singl|
|00004900| 65 2d 77 6f 72 64 20 74 | 79 70 65 20 6f 66 20 74 |e-word t|ype of t|
|00004910| 68 65 20 48 54 4d 4c 20 | 6f 62 6a 65 63 74 20 70 |he HTML |object p|
|00004920| 61 73 73 65 64 2e 0a 0a | 20 20 20 20 73 75 62 20 |assed...| sub |
|00004930| 6f 62 6a 65 63 74 5f 74 | 79 70 65 20 7b 0a 20 20 |object_t|ype {. |
|00004940| 20 20 20 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | HTML|::Base::|
|00004950| 6f 62 6a 65 63 74 5f 74 | 79 70 65 28 73 68 69 66 |object_t|ype(shif|
|00004960| 74 29 3b 0a 20 20 20 20 | 7d 0a 0a 20 20 20 20 23 |t);. |}.. #|
|00004970| 20 63 6f 70 79 5f 6f 62 | 6a 65 63 74 20 63 6f 70 | copy_ob|ject cop|
|00004980| 69 65 73 20 74 68 65 20 | 67 69 76 65 6e 20 6f 62 |ies the |given ob|
|00004990| 6a 65 63 74 20 61 6e 64 | 20 72 65 74 75 72 6e 73 |ject and| returns|
|000049a0| 20 61 20 72 65 66 65 72 | 65 6e 63 65 20 74 6f 20 | a refer|ence to |
|000049b0| 74 68 65 20 63 6f 70 79 | 0a 0a 20 20 20 20 73 75 |the copy|.. su|
|000049c0| 62 20 63 6f 70 79 5f 6f | 62 6a 65 63 74 20 7b 0a |b copy_o|bject {.|
|000049d0| 20 20 20 20 20 20 48 54 | 4d 4c 3a 3a 42 61 73 65 | HT|ML::Base|
|000049e0| 3a 3a 63 6f 70 79 5f 6f | 62 6a 65 63 74 28 73 68 |::copy_o|bject(sh|
|000049f0| 69 66 74 29 3b 0a 20 20 | 20 20 7d 0a 0a 20 20 20 |ift);. | }.. |
|00004a00| 20 23 20 6c 69 6e 6b 5f | 74 6f 5f 70 61 72 65 6e | # link_|to_paren|
|00004a10| 74 20 6d 61 6b 65 73 20 | 74 68 65 20 72 65 66 65 |t makes |the refe|
|00004a20| 72 65 6e 63 65 64 20 48 | 54 4d 4c 20 6f 62 6a 65 |renced H|TML obje|
|00004a30| 63 74 20 61 20 63 68 69 | 6c 64 20 6f 66 20 74 68 |ct a chi|ld of th|
|00004a40| 65 0a 20 20 20 20 23 20 | 73 70 65 63 69 66 69 65 |e. # |specifie|
|00004a50| 64 20 70 61 72 65 6e 74 | 2e 0a 0a 20 20 20 20 73 |d parent|... s|
|00004a60| 75 62 20 6c 69 6e 6b 5f | 74 6f 5f 70 61 72 65 6e |ub link_|to_paren|
|00004a70| 74 20 7b 0a 20 20 20 20 | 20 20 6d 79 20 28 24 73 |t {. | my ($s|
|00004a80| 65 6c 66 2c 20 24 70 61 | 72 65 6e 74 29 20 3d 20 |elf, $pa|rent) = |
|00004a90| 40 5f 3b 0a 20 20 20 20 | 20 20 69 66 20 28 24 73 |@_;. | if ($s|
|00004aa0| 65 6c 66 20 26 26 20 24 | 70 61 72 65 6e 74 29 20 |elf && $|parent) |
|00004ab0| 7b 20 48 54 4d 4c 3a 3a | 42 61 73 65 3a 3a 6c 69 |{ HTML::|Base::li|
|00004ac0| 6e 6b 5f 74 6f 5f 70 61 | 72 65 6e 74 28 24 73 65 |nk_to_pa|rent($se|
|00004ad0| 6c 66 2c 20 24 70 61 72 | 65 6e 74 29 7d 0a 20 20 |lf, $par|ent)}. |
|00004ae0| 20 20 7d 0a 0a 20 20 20 | 20 23 20 73 68 6f 77 6d | }.. | # showm|
|00004af0| 65 20 69 73 20 61 20 6c | 69 74 74 6c 65 20 64 65 |e is a l|ittle de|
|00004b00| 62 75 67 67 69 6e 67 20 | 72 6f 75 74 69 6e 65 2e |bugging |routine.|
|00004b10| 20 20 43 61 6c 6c 69 6e | 67 20 24 6f 62 6a 72 65 | Callin|g $objre|
|00004b20| 66 2d 3e 73 68 6f 77 6d | 65 20 63 61 75 73 65 73 |f->showm|e causes|
|00004b30| 0a 20 20 20 20 23 20 74 | 68 65 20 6f 62 6a 65 63 |. # t|he objec|
|00004b40| 74 20 74 6f 20 70 72 69 | 6e 74 20 6f 75 74 20 73 |t to pri|nt out s|
|00004b50| 6f 6d 65 20 73 74 61 74 | 73 20 61 62 6f 75 74 20 |ome stat|s about |
|00004b60| 69 74 73 65 6c 66 20 74 | 6f 20 53 54 44 45 52 52 |itself t|o STDERR|
|00004b70| 2e 0a 0a 20 20 20 20 73 | 75 62 20 73 68 6f 77 6d |... s|ub showm|
|00004b80| 65 20 7b 0a 20 20 20 20 | 20 20 6d 79 20 24 73 65 |e {. | my $se|
|00004b90| 6c 66 20 3d 20 73 68 69 | 66 74 3b 20 0a 20 20 20 |lf = shi|ft; . |
|00004ba0| 20 20 20 6d 79 20 24 63 | 68 69 6c 64 3b 0a 20 20 | my $c|hild;. |
|00004bb0| 20 20 20 20 70 72 69 6e | 74 66 20 28 53 54 44 45 | prin|tf (STDE|
|00004bc0| 52 52 20 22 5c 6e 48 54 | 4d 4c 4f 62 6a 65 63 74 |RR "\nHT|MLObject|
|00004bd0| 3a 20 49 20 61 6d 20 25 | 73 5c 6e 22 2c 24 73 65 |: I am %|s\n",$se|
|00004be0| 6c 66 29 3b 0a 20 20 20 | 20 20 20 69 66 20 28 24 |lf);. | if ($|
|00004bf0| 73 65 6c 66 2d 3e 7b 50 | 61 72 65 6e 74 7d 29 20 |self->{P|arent}) |
|00004c00| 7b 70 72 69 6e 74 66 20 | 28 53 54 44 45 52 52 20 |{printf |(STDERR |
|00004c10| 22 20 20 4d 79 20 70 61 | 72 65 6e 74 20 69 73 20 |" My pa|rent is |
|00004c20| 25 73 5c 6e 22 2c 24 73 | 65 6c 66 2d 3e 7b 50 61 |%s\n",$s|elf->{Pa|
|00004c30| 72 65 6e 74 7d 29 20 7d | 0a 20 20 20 20 20 20 65 |rent}) }|. e|
|00004c40| 6c 73 65 20 7b 20 70 72 | 69 6e 74 20 28 53 54 44 |lse { pr|int (STD|
|00004c50| 45 52 52 20 22 20 20 49 | 20 68 61 76 65 20 6e 6f |ERR " I| have no|
|00004c60| 20 70 61 72 65 6e 74 20 | 3b 2d 28 20 5c 6e 22 29 | parent |;-( \n")|
|00004c70| 3b 7d 0a 20 20 20 20 20 | 20 69 66 20 28 24 73 65 |;}. | if ($se|
|00004c80| 6c 66 2d 3e 7b 43 68 69 | 6c 64 72 65 6e 7d 29 20 |lf->{Chi|ldren}) |
|00004c90| 7b 0a 20 20 20 20 20 20 | 20 20 70 72 69 6e 74 66 |{. | printf|
|00004ca0| 20 28 53 54 44 45 52 52 | 20 22 20 20 49 20 68 61 | (STDERR| " I ha|
|00004cb0| 76 65 20 25 64 20 63 68 | 69 6c 64 72 65 6e 2e 5c |ve %d ch|ildren.\|
|00004cc0| 6e 22 2c 20 24 23 7b 24 | 73 65 6c 66 2d 3e 7b 43 |n", $#{$|self->{C|
|00004cd0| 68 69 6c 64 72 65 6e 7d | 7d 2b 31 29 3b 0a 20 20 |hildren}|}+1);. |
|00004ce0| 20 20 20 20 20 20 66 6f | 72 65 61 63 68 20 24 63 | fo|reach $c|
|00004cf0| 68 69 6c 64 20 28 40 7b | 24 73 65 6c 66 2d 3e 7b |hild (@{|$self->{|
|00004d00| 43 68 69 6c 64 72 65 6e | 7d 7d 29 20 7b 0a 20 20 |Children|}}) {. |
|00004d10| 20 20 20 20 20 20 20 20 | 70 72 69 6e 74 20 28 53 | |print (S|
|00004d20| 54 44 45 52 52 20 22 20 | 20 20 63 68 69 6c 64 3a |TDERR " | child:|
|00004d30| 20 24 63 68 69 6c 64 5c | 6e 22 29 3b 0a 20 20 20 | $child\|n");. |
|00004d40| 20 20 20 20 20 7d 0a 20 | 20 20 20 20 20 7d 0a 20 | }. | }. |
|00004d50| 20 20 20 20 20 69 66 20 | 28 25 7b 24 73 65 6c 66 | if |(%{$self|
|00004d60| 2d 3e 7b 41 74 74 72 69 | 62 75 74 65 73 7d 7d 29 |->{Attri|butes}})|
|00004d70| 20 7b 0a 20 20 20 20 20 | 20 20 20 70 72 69 6e 74 | {. | print|
|00004d80| 20 28 53 54 44 45 52 52 | 20 22 20 20 54 68 65 73 | (STDERR| " Thes|
|00004d90| 65 20 61 72 65 20 6d 79 | 20 61 74 74 72 69 62 75 |e are my| attribu|
|00004da0| 74 65 73 3a 5c 6e 22 29 | 3b 0a 20 20 20 20 20 20 |tes:\n")|;. |
|00004db0| 20 20 6d 79 20 28 24 6b | 65 79 2c 20 24 76 61 6c | my ($k|ey, $val|
|00004dc0| 75 65 29 3b 0a 20 20 20 | 20 20 20 20 20 77 68 69 |ue);. | whi|
|00004dd0| 6c 65 20 28 28 24 6b 65 | 79 2c 24 76 61 6c 75 65 |le (($ke|y,$value|
|00004de0| 29 20 3d 20 65 61 63 68 | 20 28 25 7b 24 73 65 6c |) = each| (%{$sel|
|00004df0| 66 2d 3e 7b 41 74 74 72 | 69 62 75 74 65 73 7d 7d |f->{Attr|ibutes}}|
|00004e00| 29 29 20 7b 20 0a 20 20 | 20 20 20 20 20 20 20 20 |)) { . | |
|00004e10| 70 72 69 6e 74 20 28 53 | 54 44 45 52 52 20 22 20 |print (S|TDERR " |
|00004e20| 20 20 20 24 6b 65 79 20 | 3d 20 24 76 61 6c 75 65 | $key |= $value|
|00004e30| 5c 6e 22 29 20 0a 20 20 | 20 20 20 20 20 20 7d 0a |\n") . | }.|
|00004e40| 20 20 20 20 20 20 7d 0a | 20 20 20 20 7d 20 23 20 | }.| } # |
|00004e50| 65 6e 64 20 73 75 62 20 | 73 68 6f 77 6d 65 0a 0a |end sub |showme..|
|00004e60| 20 20 20 20 23 20 47 69 | 76 65 6e 20 61 6e 20 48 | # Gi|ven an H|
|00004e70| 54 4d 4c 20 6f 62 6a 65 | 63 74 20 72 65 66 65 72 |TML obje|ct refer|
|00004e80| 65 6e 63 65 20 61 6e 64 | 20 61 20 74 79 70 65 20 |ence and| a type |
|00004e90| 6f 66 20 61 6e 20 48 54 | 4d 4c 20 6f 62 6a 65 63 |of an HT|ML objec|
|00004ea0| 74 2c 20 0a 20 20 20 20 | 23 20 63 6f 6e 74 61 69 |t, . |# contai|
|00004eb0| 6e 65 64 5f 62 79 20 72 | 65 74 75 72 6e 73 20 31 |ned_by r|eturns 1|
|00004ec0| 20 69 66 20 74 68 65 20 | 67 69 76 65 6e 20 6f 62 | if the |given ob|
|00004ed0| 6a 65 63 74 20 69 73 20 | 63 6f 6e 74 61 69 6e 65 |ject is |containe|
|00004ee0| 64 0a 20 20 20 20 23 20 | 28 61 74 20 61 6e 79 20 |d. # |(at any |
|00004ef0| 68 69 67 68 65 72 20 6c | 65 76 65 6c 29 20 62 79 |higher l|evel) by|
|00004f00| 20 61 6e 6f 74 68 65 72 | 20 6f 62 6a 65 63 74 20 | another| object |
|00004f10| 6f 66 20 74 68 65 20 67 | 69 76 65 6e 20 74 79 70 |of the g|iven typ|
|00004f20| 65 2c 20 6f 72 20 72 65 | 74 75 72 6e 73 0a 20 20 |e, or re|turns. |
|00004f30| 20 20 23 20 30 20 6f 74 | 68 65 72 77 69 73 65 2e | # 0 ot|herwise.|
|00004f40| 0a 0a 20 20 20 20 73 75 | 62 20 63 6f 6e 74 61 69 |.. su|b contai|
|00004f50| 6e 65 64 5f 62 79 20 7b | 0a 20 20 20 20 20 20 6d |ned_by {|. m|
|00004f60| 79 20 28 24 73 65 6c 66 | 2c 20 24 74 79 70 65 29 |y ($self|, $type)|
|00004f70| 20 3d 20 40 5f 3b 0a 20 | 20 20 20 20 20 69 66 20 | = @_;. | if |
|00004f80| 28 24 73 65 6c 66 20 26 | 26 20 24 74 79 70 65 29 |($self &|& $type)|
|00004f90| 20 7b 0a 09 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | {..HTML|::Base::|
|00004fa0| 63 6f 6e 74 61 69 6e 65 | 64 5f 62 79 20 28 24 73 |containe|d_by ($s|
|00004fb0| 65 6c 66 2c 20 24 74 79 | 70 65 29 3b 0a 20 20 20 |elf, $ty|pe);. |
|00004fc0| 20 20 20 7d 0a 20 20 20 | 20 7d 0a 0a 20 20 20 20 | }. | }.. |
|00004fd0| 23 20 54 68 69 73 20 64 | 69 73 70 6c 61 79 20 6d |# This d|isplay m|
|00004fe0| 65 74 68 6f 64 20 69 73 | 20 61 20 64 75 6d 6d 79 |ethod is| a dummy|
|00004ff0| 20 6f 72 20 22 76 69 72 | 74 75 61 6c 22 20 6d 65 | or "vir|tual" me|
|00005000| 74 68 6f 64 20 66 6f 72 | 20 74 68 65 20 48 54 4d |thod for| the HTM|
|00005010| 4c 4f 62 6a 65 63 74 0a | 20 20 20 20 23 20 73 75 |LObject.| # su|
|00005020| 70 65 72 63 6c 61 73 73 | 2e 20 20 4f 6e 6c 79 20 |perclass|. Only |
|00005030| 63 6c 61 73 73 65 73 20 | 64 65 72 69 76 65 64 20 |classes |derived |
|00005040| 66 72 6f 6d 20 48 54 4d | 4c 4f 62 6a 65 63 74 20 |from HTM|LObject |
|00005050| 72 65 61 6c 6c 79 20 6b | 6e 6f 77 20 68 6f 77 20 |really k|now how |
|00005060| 74 6f 0a 20 20 20 20 23 | 20 64 69 73 70 6c 61 79 |to. #| display|
|00005070| 20 74 68 65 6d 73 65 6c | 76 65 73 2e 0a 0a 20 20 | themsel|ves... |
|00005080| 20 20 73 75 62 20 64 69 | 73 70 6c 61 79 20 7b 20 | sub di|splay { |
|00005090| 23 20 64 75 6d 6d 79 20 | 76 69 72 74 75 61 6c 20 |# dummy |virtual |
|000050a0| 6d 65 74 68 6f 64 20 66 | 6f 72 20 73 75 70 65 72 |method f|or super|
|000050b0| 63 6c 61 73 73 0a 20 20 | 20 20 7d 0a 0a 20 20 20 |class. | }.. |
|000050c0| 20 23 20 47 69 76 65 6e | 20 61 6e 20 48 54 4d 4c | # Given| an HTML|
|000050d0| 4f 62 6a 65 63 74 20 72 | 65 66 20 61 6e 64 20 61 |Object r|ef and a|
|000050e0| 20 6c 69 73 74 20 6f 66 | 20 61 74 74 72 69 62 75 | list of| attribu|
|000050f0| 74 65 20 6e 61 6d 65 73 | 2c 0a 20 20 20 20 23 20 |te names|,. # |
|00005100| 64 69 73 70 6c 61 79 5f | 61 74 74 72 69 62 75 74 |display_|attribut|
|00005110| 65 73 20 77 69 6c 6c 20 | 63 68 65 63 6b 20 74 6f |es will |check to|
|00005120| 20 73 65 65 20 69 66 20 | 74 68 65 20 67 69 76 65 | see if |the give|
|00005130| 6e 20 6f 62 6a 65 63 74 | 20 63 6f 6e 74 61 69 6e |n object| contain|
|00005140| 73 20 74 68 65 0a 20 20 | 20 20 23 20 6e 61 6d 65 |s the. | # name|
|00005150| 64 20 61 74 74 72 69 62 | 75 74 65 73 2c 20 61 6e |d attrib|utes, an|
|00005160| 64 20 69 66 20 69 74 20 | 64 6f 65 73 20 69 74 20 |d if it |does it |
|00005170| 77 69 6c 6c 20 6f 75 74 | 70 75 74 20 74 68 65 6d |will out|put them|
|00005180| 20 69 6e 20 74 68 65 20 | 66 6f 72 6d 3a 0a 0a 20 | in the |form:.. |
|00005190| 20 20 20 23 20 20 20 20 | 20 20 20 20 20 20 41 54 | # | AT|
|000051a0| 54 52 49 42 55 54 45 3d | 56 41 4c 55 45 0a 0a 20 |TRIBUTE=|VALUE.. |
|000051b0| 20 20 20 23 20 4e 6f 74 | 65 20 74 68 61 74 20 69 | # Not|e that i|
|000051c0| 66 20 61 6e 20 61 74 74 | 72 69 62 75 74 65 20 69 |f an att|ribute i|
|000051d0| 73 20 64 65 66 69 6e 65 | 64 20 69 6e 20 7b 41 74 |s define|d in {At|
|000051e0| 74 72 69 62 75 74 65 73 | 7d 2c 20 62 75 74 20 68 |tributes|}, but h|
|000051f0| 61 73 20 6e 6f 20 76 61 | 6c 75 65 2c 0a 20 20 20 |as no va|lue,. |
|00005200| 20 23 20 77 65 20 61 73 | 73 75 6d 65 20 74 68 61 | # we as|sume tha|
|00005210| 74 20 69 74 20 73 68 6f | 75 6c 64 20 61 70 70 65 |t it sho|uld appe|
|00005220| 61 72 2c 20 62 75 74 20 | 77 69 74 68 20 6e 6f 20 |ar, but |with no |
|00005230| 76 61 6c 75 65 2c 20 6c | 69 6b 65 20 74 68 61 74 |value, l|ike that|
|00005240| 3a 0a 0a 20 20 20 20 23 | 20 20 20 20 20 20 20 20 |:.. #| |
|00005250| 20 20 41 54 54 52 49 42 | 55 54 45 0a 0a 20 20 20 | ATTRIB|UTE.. |
|00005260| 20 23 20 54 68 69 73 20 | 73 75 70 70 6f 72 74 73 | # This |supports|
|00005270| 20 74 68 65 20 49 53 4d | 41 50 20 61 74 74 72 69 | the ISM|AP attri|
|00005280| 62 75 74 65 20 6f 66 20 | 74 68 65 20 49 4d 47 20 |bute of |the IMG |
|00005290| 74 61 67 2c 20 77 68 69 | 63 68 20 63 61 6e 20 62 |tag, whi|ch can b|
|000052a0| 65 20 73 70 65 63 69 66 | 69 65 64 0a 20 20 20 20 |e specif|ied. |
|000052b0| 23 20 69 6e 20 74 68 65 | 20 49 4d 47 20 74 61 67 |# in the| IMG tag|
|000052c0| 2c 20 62 75 74 20 77 68 | 69 63 68 20 63 61 72 72 |, but wh|ich carr|
|000052d0| 69 65 73 20 6e 6f 20 76 | 61 6c 75 65 21 0a 0a 23 |ies no v|alue!..#|
|000052e0| 20 41 20 73 70 65 63 69 | 61 6c 20 41 74 74 72 69 | A speci|al Attri|
|000052f0| 62 75 74 65 2c 20 27 45 | 76 61 6c 27 20 69 73 20 |bute, 'E|val' is |
|00005300| 72 65 63 6f 67 6e 69 73 | 65 64 2e 20 20 49 6e 20 |recognis|ed. In |
|00005310| 74 68 69 73 20 63 61 73 | 65 20 69 74 20 69 73 20 |this cas|e it is |
|00005320| 74 68 65 0a 23 20 75 73 | 65 72 73 20 72 65 73 70 |the.# us|ers resp|
|00005330| 6f 6e 73 69 62 69 74 79 | 20 74 6f 20 6d 61 6b 65 |onsibity| to make|
|00005340| 20 63 65 72 74 61 69 6e | 20 74 68 61 74 20 74 68 | certain| that th|
|00005350| 65 20 6f 75 74 70 75 74 | 20 73 74 72 69 6e 67 73 |e output| strings|
|00005360| 20 61 72 65 20 6c 65 67 | 61 6c 0a 23 20 61 6e 64 | are leg|al.# and|
|00005370| 20 63 6f 6d 70 6c 65 74 | 65 20 48 54 4d 4c 20 73 | complet|e HTML s|
|00005380| 79 6e 74 61 78 20 73 69 | 6e 63 65 20 6e 6f 20 73 |yntax si|nce no s|
|00005390| 61 6e 69 74 69 7a 69 6e | 67 20 69 73 20 69 73 20 |anitizin|g is is |
|000053a0| 70 65 72 66 6f 72 6d 65 | 64 2e 0a 23 0a 23 20 20 |performe|d..#.# |
|000053b0| 20 27 45 76 61 6c 27 20 | 3d 3e 20 31 0a 23 20 20 | 'Eval' |=> 1.# |
|000053c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 23 09 49 |--------|----.#.I|
|000053d0| 66 20 73 65 74 20 74 68 | 65 6e 20 74 68 65 20 74 |f set th|en the t|
|000053e0| 65 78 74 20 69 73 20 66 | 69 72 73 74 20 70 72 6f |ext is f|irst pro|
|000053f0| 63 65 73 73 65 64 20 77 | 69 74 68 20 61 0a 23 09 |cessed w|ith a.#.|
|00005400| 70 65 72 6c 20 65 76 61 | 6c 28 29 2e 20 20 54 68 |perl eva|l(). Th|
|00005410| 69 73 20 70 65 72 6d 69 | 74 73 20 74 68 65 20 65 |is permi|ts the e|
|00005420| 6e 63 6c 75 73 69 6f 6e | 20 6f 66 20 6f 62 6a 65 |nclusion| of obje|
|00005430| 63 74 73 20 6f 6e 20 74 | 68 65 0a 23 09 74 72 65 |cts on t|he.#.tre|
|00005440| 65 20 74 68 61 74 20 61 | 72 65 20 65 76 61 6c 75 |e that a|re evalu|
|00005450| 61 74 65 64 20 61 74 20 | 74 68 65 20 74 69 6d 65 |ated at |the time|
|00005460| 20 6f 66 20 61 63 74 75 | 61 6c 20 75 73 61 67 65 | of actu|al usage|
|00005470| 2e 20 20 54 68 69 73 0a | 23 09 65 6e 61 62 6c 65 |. This.|#.enable|
|00005480| 73 20 74 68 65 20 65 6d | 62 65 64 64 69 6e 67 20 |s the em|bedding |
|00005490| 6f 66 20 50 65 72 6c 20 | 76 61 72 69 61 62 6c 65 |of Perl |variable|
|000054a0| 73 20 77 68 6f 73 65 20 | 76 61 6c 75 65 73 20 61 |s whose |values a|
|000054b0| 72 65 20 65 69 74 68 65 | 72 0a 23 09 6e 6f 74 20 |re eithe|r.#.not |
|000054c0| 6b 6e 6f 77 6e 20 61 74 | 20 74 68 65 20 74 69 6d |known at| the tim|
|000054d0| 65 20 6f 66 20 63 6f 6e | 73 74 72 75 63 74 69 6f |e of con|structio|
|000054e0| 6e 20 6f 72 20 77 68 69 | 63 68 20 63 68 61 6e 67 |n or whi|ch chang|
|000054f0| 65 20 64 79 6d 61 6e 69 | 63 61 6c 6c 79 2e 0a 23 |e dymani|cally..#|
|00005500| 09 49 74 20 69 73 20 65 | 73 70 65 63 69 61 6c 6c |.It is e|speciall|
|00005510| 79 20 75 73 65 66 75 6c | 20 66 6f 72 20 63 6f 6e |y useful| for con|
|00005520| 73 74 72 75 63 74 73 20 | 73 75 63 68 20 61 73 0a |structs |such as.|
|00005530| 23 0a 23 09 09 20 20 6e | 65 77 20 54 65 78 74 28 |#.#.. n|ew Text(|
|00005540| 27 24 7b 5c 6d 61 69 6e | 3a 3a 70 75 72 65 5f 6d |'${\main|::pure_m|
|00005550| 61 67 69 63 28 29 7d 27 | 2c 20 45 76 61 6c 20 3d |agic()}'|, Eval =|
|00005560| 3e 20 31 29 3b 0a 23 0a | 23 09 77 68 69 63 68 20 |> 1);.#.|#.which |
|00005570| 77 69 6c 6c 20 64 65 6c | 61 79 20 74 68 65 20 63 |will del|ay the c|
|00005580| 61 6c 6c 20 74 6f 20 70 | 75 72 65 5f 6d 61 67 69 |all to p|ure_magi|
|00005590| 63 28 29 20 75 6e 74 69 | 6c 20 74 68 65 20 6d 6f |c() unti|l the mo|
|000055a0| 6d 65 6e 74 20 74 68 65 | 0a 23 09 74 68 65 20 50 |ment the|.#.the P|
|000055b0| 61 67 65 20 69 73 20 62 | 65 69 6e 67 20 6f 75 74 |age is b|eing out|
|000055c0| 70 75 74 20 61 6e 64 20 | 69 6e 73 65 72 74 20 74 |put and |insert t|
|000055d0| 68 65 20 6f 75 74 70 75 | 74 20 66 72 6f 6d 20 74 |he outpu|t from t|
|000055e0| 68 65 20 63 61 6c 6c 0a | 23 09 69 6e 74 6f 20 74 |he call.|#.into t|
|000055f0| 68 65 20 62 79 74 65 20 | 73 74 72 65 61 6d 20 6f |he byte |stream o|
|00005600| 66 20 74 68 65 20 50 61 | 67 65 2e 20 53 65 65 20 |f the Pa|ge. See |
|00005610| 74 68 65 20 70 65 72 6c | 72 65 66 20 6d 61 6e 75 |the perl|ref manu|
|00005620| 61 6c 20 70 61 67 65 0a | 23 09 69 66 20 79 6f 75 |al page.|#.if you|
|00005630| 20 77 61 6e 74 20 74 6f | 20 75 6e 64 65 72 73 74 | want to| underst|
|00005640| 61 6e 64 20 68 6f 77 20 | 74 68 69 73 20 77 6f 72 |and how |this wor|
|00005650| 6b 73 2e 20 4e 6f 74 65 | 20 74 68 61 74 20 74 68 |ks. Note| that th|
|00005660| 65 20 74 68 65 20 0a 23 | 09 61 72 67 75 6d 65 6e |e the .#|.argumen|
|00005670| 74 20 6d 75 73 74 20 62 | 65 20 69 6e 20 73 69 6e |t must b|e in sin|
|00005680| 67 6c 65 20 71 75 6f 74 | 65 73 20 28 27 29 20 66 |gle quot|es (') f|
|00005690| 6f 72 20 74 68 69 73 20 | 74 6f 20 77 6f 72 6b 2e |or this |to work.|
|000056a0| 20 41 6c 73 6f 0a 23 09 | 62 65 20 61 77 61 72 65 | Also.#.|be aware|
|000056b0| 20 74 68 61 74 20 74 68 | 65 20 65 76 61 6c 75 61 | that th|e evalua|
|000056c0| 74 69 6f 6e 20 74 61 6b | 65 73 20 70 6c 61 63 65 |tion tak|es place|
|000056d0| 20 69 6e 20 70 61 63 6b | 61 67 65 20 45 76 61 6c | in pack|age Eval|
|000056e0| 2c 20 62 75 74 0a 23 09 | 74 68 61 74 20 61 6c 6c |, but.#.|that all|
|000056f0| 20 76 61 72 69 61 62 6c | 65 73 20 61 72 65 20 61 | variabl|es are a|
|00005700| 75 74 6f 6d 61 74 69 63 | 61 6c 6c 79 20 66 6f 72 |utomatic|ally for|
|00005710| 63 65 64 20 62 61 63 6b | 20 69 6e 74 6f 20 6d 61 |ced back| into ma|
|00005720| 69 6e 0a 23 09 62 65 66 | 6f 72 65 20 74 68 65 20 |in.#.bef|ore the |
|00005730| 65 76 61 6c 75 61 74 69 | 6f 6e 2e 20 54 68 69 73 |evaluati|on. This|
|00005740| 20 64 6f 65 73 20 74 68 | 65 20 60 72 69 67 68 74 | does th|e `right|
|00005750| 27 20 74 68 69 6e 67 20 | 65 76 65 6e 20 69 66 0a |' thing |even if.|
|00005760| 23 09 74 68 65 20 76 61 | 72 69 61 62 6c 65 20 69 |#.the va|riable i|
|00005770| 73 20 69 6e 20 61 6e 6f | 74 68 65 72 20 70 61 63 |s in ano|ther pac|
|00005780| 6b 61 67 65 2c 20 65 2e | 67 2e 0a 23 0a 23 09 09 |kage, e.|g..#.#..|
|00005790| 20 20 24 4d 59 3a 3a 76 | 61 72 20 3d 3e 20 24 6d | $MY::v|ar => $m|
|000057a0| 61 69 6e 3a 3a 4d 59 3a | 76 61 72 0a 23 09 09 20 |ain::MY:|var.#.. |
|000057b0| 20 24 6d 61 69 6e 3a 3a | 76 61 72 20 3d 3e 20 24 | $main::|var => $|
|000057c0| 6d 61 69 6e 3a 3a 6d 61 | 69 6e 3a 3a 76 61 72 20 |main::ma|in::var |
|000057d0| 20 2d 20 77 68 69 63 68 | 20 68 61 70 70 65 6e 73 | - which| happens|
|000057e0| 20 74 6f 20 62 65 20 6f | 6b 61 79 20 3a 29 0a 0a | to be o|kay :)..|
|000057f0| 20 20 20 20 73 75 62 20 | 64 69 73 70 6c 61 79 5f | sub |display_|
|00005800| 61 74 74 72 69 62 75 74 | 65 73 20 7b 0a 20 20 20 |attribut|es {. |
|00005810| 20 20 20 48 54 4d 4c 3a | 3a 42 61 73 65 3a 3a 5f | HTML:|:Base::_|
|00005820| 73 68 6f 77 5f 73 75 62 | 5f 65 6e 74 72 79 20 28 |show_sub|_entry (|
|00005830| 40 5f 29 3b 0a 20 20 20 | 20 20 20 6d 79 20 24 73 |@_);. | my $s|
|00005840| 65 6c 66 20 3d 20 73 68 | 69 66 74 3b 0a 20 20 20 |elf = sh|ift;. |
|00005850| 20 20 20 6d 79 20 24 61 | 74 74 72 69 62 75 74 65 | my $a|ttribute|
|00005860| 20 3d 20 73 68 69 66 74 | 3b 0a 20 20 20 20 20 20 | = shift|;. |
|00005870| 6c 6f 63 61 6c 20 24 3a | 3a 76 61 6c 75 65 3b 0a |local $:|:value;.|
|00005880| 0a 20 20 20 20 20 20 77 | 68 69 6c 65 20 28 24 61 |. w|hile ($a|
|00005890| 74 74 72 69 62 75 74 65 | 29 20 7b 0a 09 69 66 20 |ttribute|) {..if |
|000058a0| 28 64 65 66 69 6e 65 64 | 20 28 24 73 65 6c 66 2d |(defined| ($self-|
|000058b0| 3e 7b 41 74 74 72 69 62 | 75 74 65 73 7d 2d 3e 7b |>{Attrib|utes}->{|
|000058c0| 24 61 74 74 72 69 62 75 | 74 65 7d 29 29 20 7b 20 |$attribu|te})) { |
|000058d0| 0a 09 20 20 70 72 69 6e | 74 20 22 20 24 61 74 74 |.. prin|t " $att|
|000058e0| 72 69 62 75 74 65 22 3b | 0a 0a 09 20 20 69 66 20 |ribute";|... if |
|000058f0| 28 24 73 65 6c 66 2d 3e | 7b 41 74 74 72 69 62 75 |($self->|{Attribu|
|00005900| 74 65 73 7d 2d 3e 7b 24 | 61 74 74 72 69 62 75 74 |tes}->{$|attribut|
|00005910| 65 7d 29 20 7b 20 0a 09 | 20 20 20 20 24 3a 3a 76 |e}) { ..| $::v|
|00005920| 61 6c 75 65 20 3d 20 24 | 73 65 6c 66 2d 3e 7b 41 |alue = $|self->{A|
|00005930| 74 74 72 69 62 75 74 65 | 73 7d 2d 3e 7b 24 61 74 |ttribute|s}->{$at|
|00005940| 74 72 69 62 75 74 65 7d | 3b 0a 09 20 20 20 20 70 |tribute}|;.. p|
|00005950| 72 69 6e 74 20 22 3d 5c | 22 22 3b 0a 0a 09 20 20 |rint "=\|"";... |
|00005960| 20 20 69 66 20 28 64 65 | 66 69 6e 65 64 20 24 73 | if (de|fined $s|
|00005970| 65 6c 66 2d 3e 7b 41 74 | 74 72 69 62 75 74 65 73 |elf->{At|tributes|
|00005980| 7d 2d 3e 7b 45 76 61 6c | 7d 29 20 7b 0a 09 20 20 |}->{Eval|}) {.. |
|00005990| 20 20 20 20 24 3a 3a 76 | 61 6c 75 65 20 3d 7e 20 | $::v|alue =~ |
|000059a0| 73 2f 5c 24 28 5c 77 29 | 2f 5c 24 6d 61 69 6e 3a |s/\$(\w)|/\$main:|
|000059b0| 3a 24 31 2f 67 6d 3b 0a | 09 20 20 20 20 20 20 65 |:$1/gm;.|. e|
|000059c0| 76 61 6c 20 22 5c 24 3a | 3a 76 61 6c 75 65 20 3d |val "\$:|:value =|
|000059d0| 20 71 71 28 24 3a 3a 76 | 61 6c 75 65 29 22 3b 0a | qq($::v|alue)";.|
|000059e0| 0a 09 20 20 20 20 20 20 | 23 20 4a 49 53 20 2d 20 |.. |# JIS - |
|000059f0| 6e 65 65 64 20 62 65 74 | 74 65 72 20 64 69 61 67 |need bet|ter diag|
|00005a00| 6e 6f 73 74 69 63 73 0a | 09 20 20 20 20 20 20 70 |nostics.|. p|
|00005a10| 72 69 6e 74 20 53 54 44 | 45 52 52 20 22 5c 6e 65 |rint STD|ERR "\ne|
|00005a20| 76 61 6c 20 66 61 69 6c | 65 64 3a 20 24 40 5c 6e |val fail|ed: $@\n|
|00005a30| 22 20 69 66 20 24 40 3b | 0a 09 20 20 20 20 20 20 |" if $@;|.. |
|00005a40| 70 72 69 6e 74 20 22 24 | 3a 3a 76 61 6c 75 65 22 |print "$|::value"|
|00005a50| 3b 0a 09 20 20 20 20 7d | 0a 09 20 20 20 20 65 6c |;.. }|.. el|
|00005a60| 73 65 20 7b 0a 09 20 20 | 20 20 20 20 48 54 4d 4c |se {.. | HTML|
|00005a70| 3a 3a 42 61 73 65 3a 3a | 5f 6f 75 74 70 75 74 5f |::Base::|_output_|
|00005a80| 68 74 6d 6c 20 24 3a 3a | 76 61 6c 75 65 3b 0a 20 |html $::|value;. |
|00005a90| 20 20 20 20 20 20 20 20 | 20 20 20 7d 0a 0a 09 20 | | }... |
|00005aa0| 20 20 20 70 72 69 6e 74 | 20 22 5c 22 22 3b 0a 09 | print| "\"";..|
|00005ab0| 20 20 7d 0a 09 7d 0a 0a | 09 24 61 74 74 72 69 62 | }..}..|.$attrib|
|00005ac0| 75 74 65 20 3d 20 73 68 | 69 66 74 3b 0a 0a 20 20 |ute = sh|ift;.. |
|00005ad0| 20 20 20 20 7d 20 23 20 | 65 6e 64 20 77 68 69 6c | } # |end whil|
|00005ae0| 65 0a 0a 20 20 20 20 7d | 20 23 20 65 6e 64 20 73 |e.. }| # end s|
|00005af0| 75 62 20 64 69 73 70 6c | 61 79 5f 61 74 74 72 69 |ub displ|ay_attri|
|00005b00| 62 75 74 65 73 0a 0a 20 | 20 7d 20 23 20 65 6e 64 |butes.. | } # end|
|00005b10| 20 70 61 63 6b 61 67 65 | 20 48 54 4d 4c 4f 62 6a | package| HTMLObj|
|00005b20| 65 63 74 0a 0a 23 23 23 | 23 23 23 23 23 23 23 23 |ect..###|########|
|00005b30| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00005b40| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00005b50| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00005b60| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00005b70| 23 23 23 0a 0a 20 20 23 | 20 54 68 65 20 6e 65 78 |###.. #| The nex|
|00005b80| 74 20 70 61 63 6b 61 67 | 65 73 20 61 72 65 20 63 |t packag|es are c|
|00005b90| 6c 61 73 73 65 73 20 64 | 65 72 69 76 65 64 20 66 |lasses d|erived f|
|00005ba0| 72 6f 6d 20 48 54 4d 4c | 4f 62 6a 65 63 74 0a 0a |rom HTML|Object..|
|00005bb0| 20 20 23 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | # HTML|::Base::|
|00005bc0| 42 69 6e 61 72 79 54 61 | 67 20 63 6c 61 73 73 2e |BinaryTa|g class.|
|00005bd0| 20 20 54 68 69 73 20 63 | 6c 61 73 73 20 69 73 20 | This c|lass is |
|00005be0| 69 74 73 65 6c 66 20 61 | 20 73 75 70 65 72 63 6c |itself a| supercl|
|00005bf0| 61 73 73 20 66 72 6f 6d | 20 0a 20 20 23 20 77 68 |ass from| . # wh|
|00005c00| 69 63 68 20 64 65 72 69 | 76 65 73 0a 20 20 23 20 |ich deri|ves. # |
|00005c10| 61 6c 6c 20 48 54 4d 4c | 20 6f 62 6a 65 63 74 73 |all HTML| objects|
|00005c20| 20 77 68 6f 73 65 20 73 | 79 6e 74 61 78 20 69 73 | whose s|yntax is|
|00005c30| 20 6d 65 72 65 6c 79 20 | 3c 78 3e 20 6f 6e 20 6f | merely |<x> on o|
|00005c40| 70 65 6e 20 61 6e 64 20 | 3c 2f 78 3e 20 6f 6e 20 |pen and |</x> on |
|00005c50| 63 6c 6f 73 65 2c 0a 20 | 20 23 20 77 68 65 72 65 |close,. | # where|
|00005c60| 20 22 78 22 20 3d 20 73 | 6f 6d 65 20 73 69 6e 67 | "x" = s|ome sing|
|00005c70| 6c 65 20 73 74 72 69 6e | 67 20 77 69 74 68 20 6e |le strin|g with n|
|00005c80| 6f 20 73 70 61 63 65 73 | 2e 20 20 28 45 78 61 6d |o spaces|. (Exam|
|00005c90| 70 6c 65 3a 20 3c 49 3e | 48 69 3c 2f 49 3e 29 0a |ple: <I>|Hi</I>).|
|00005ca0| 0a 20 20 23 20 42 69 6e | 61 72 79 54 61 67 20 77 |. # Bin|aryTag w|
|00005cb0| 69 6c 6c 20 61 6c 73 6f | 20 68 61 6e 64 6c 65 20 |ill also| handle |
|00005cc0| 48 54 4d 4c 20 61 74 74 | 72 69 62 75 74 65 73 2e |HTML att|ributes.|
|00005cd0| 20 20 49 66 20 74 68 65 | 20 48 54 4d 4c 4f 62 6a | If the| HTMLObj|
|00005ce0| 65 63 74 20 68 61 73 20 | 61 6e 0a 20 20 23 20 61 |ect has |an. # a|
|00005cf0| 72 72 61 79 20 6e 61 6d | 65 64 20 44 69 73 70 6c |rray nam|ed Displ|
|00005d00| 61 79 65 64 5f 41 74 74 | 72 69 62 75 74 65 73 2c |ayed_Att|ributes,|
|00005d10| 20 74 68 65 20 42 69 6e | 61 72 79 54 61 67 3a 3a | the Bin|aryTag::|
|00005d20| 64 69 73 70 6c 61 79 20 | 77 69 6c 6c 20 61 64 64 |display |will add|
|00005d30| 20 74 68 65 0a 20 20 23 | 20 76 61 6c 75 65 73 20 | the. #| values |
|00005d40| 6f 66 20 61 6e 79 20 6f | 66 20 74 68 6f 73 65 20 |of any o|f those |
|00005d50| 61 74 74 72 69 62 75 74 | 65 73 20 69 6e 20 74 68 |attribut|es in th|
|00005d60| 61 74 20 6c 69 73 74 20 | 74 68 61 74 20 68 61 76 |at list |that hav|
|00005d70| 65 20 76 61 6c 75 65 73 | 20 74 6f 20 74 68 65 0a |e values| to the.|
|00005d80| 20 20 23 20 6f 70 65 6e | 69 6e 67 20 74 61 67 2e | # open|ing tag.|
|00005d90| 20 20 46 6f 72 20 65 78 | 61 6d 70 6c 65 2c 20 69 | For ex|ample, i|
|00005da0| 66 20 61 6e 20 41 6e 63 | 68 6f 72 20 6f 62 6a 65 |f an Anc|hor obje|
|00005db0| 63 74 20 68 61 73 20 61 | 6e 20 61 74 74 72 69 62 |ct has a|n attrib|
|00005dc0| 75 74 65 20 6e 61 6d 65 | 64 0a 20 20 23 20 22 48 |ute name|d. # "H|
|00005dd0| 52 45 46 22 2c 20 74 68 | 65 6e 20 48 54 4d 4c 3a |REF", th|en HTML:|
|00005de0| 3a 42 61 73 65 3a 3a 42 | 69 6e 61 72 79 54 61 67 |:Base::B|inaryTag|
|00005df0| 3a 3a 64 69 73 70 6c 61 | 79 20 77 69 6c 6c 20 6f |::displa|y will o|
|00005e00| 75 74 70 75 74 20 22 3c | 41 20 48 52 45 46 3d 28 |utput "<|A HREF=(|
|00005e10| 76 61 6c 75 65 29 3e 22 | 0a 0a 20 20 70 61 63 6b |value)>"|.. pack|
|00005e20| 61 67 65 20 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a |age HTML|::Base::|
|00005e30| 42 69 6e 61 72 79 54 61 | 67 3b 0a 20 20 7b 0a 20 |BinaryTa|g;. {. |
|00005e40| 20 20 20 40 48 54 4d 4c | 3a 3a 42 61 73 65 3a 3a | @HTML|::Base::|
|00005e50| 42 69 6e 61 72 79 54 61 | 67 3a 3a 49 53 41 20 3d |BinaryTa|g::ISA =|
|00005e60| 20 71 77 28 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | qw( HTM|L::Base:|
|00005e70| 3a 48 54 4d 4c 4f 62 6a | 65 63 74 20 29 3b 0a 0a |:HTMLObj|ect );..|
|00005e80| 20 20 20 20 23 20 54 68 | 65 20 42 69 6e 61 72 79 | # Th|e Binary|
|00005e90| 54 61 67 20 63 6f 6e 73 | 74 72 75 63 74 6f 72 20 |Tag cons|tructor |
|00005ea0| 62 75 69 6c 64 73 20 61 | 6e 20 48 54 4d 4c 4f 62 |builds a|n HTMLOb|
|00005eb0| 6a 65 63 74 2c 20 74 68 | 65 6e 20 61 64 64 73 20 |ject, th|en adds |
|00005ec0| 74 68 65 20 0a 20 20 20 | 20 23 20 48 54 4d 4c 20 |the . | # HTML |
|00005ed0| 74 61 67 20 28 69 65 2c | 20 22 48 31 22 29 20 61 |tag (ie,| "H1") a|
|00005ee0| 73 20 61 6e 20 61 74 74 | 72 69 62 75 74 65 20 74 |s an att|ribute t|
|00005ef0| 6f 20 74 68 65 20 6f 62 | 6a 65 63 74 2e 0a 0a 20 |o the ob|ject... |
|00005f00| 20 20 20 73 75 62 20 6e | 65 77 20 7b 0a 20 20 20 | sub n|ew {. |
|00005f10| 20 20 20 48 54 4d 4c 3a | 3a 42 61 73 65 3a 3a 5f | HTML:|:Base::_|
|00005f20| 73 68 6f 77 5f 73 75 62 | 5f 65 6e 74 72 79 20 28 |show_sub|_entry (|
|00005f30| 40 5f 29 3b 0a 20 20 20 | 20 20 20 6d 79 20 24 74 |@_);. | my $t|
|00005f40| 79 70 65 20 3d 20 73 68 | 69 66 74 3b 20 0a 20 20 |ype = sh|ift; . |
|00005f50| 20 20 20 20 6d 79 20 24 | 74 61 67 20 3d 20 73 68 | my $|tag = sh|
|00005f60| 69 66 74 3b 20 0a 20 20 | 20 20 20 20 6d 79 20 24 |ift; . | my $|
|00005f70| 73 65 6c 66 20 3d 20 6e | 65 77 20 48 54 4d 4c 3a |self = n|ew HTML:|
|00005f80| 3a 42 61 73 65 3a 3a 48 | 54 4d 4c 4f 62 6a 65 63 |:Base::H|TMLObjec|
|00005f90| 74 20 40 5f 3b 0a 20 20 | 20 20 20 20 24 73 65 6c |t @_;. | $sel|
|00005fa0| 66 2d 3e 7b 27 74 61 67 | 27 7d 20 3d 20 24 74 61 |f->{'tag|'} = $ta|
|00005fb0| 67 3b 0a 20 20 20 20 20 | 20 62 6c 65 73 73 20 24 |g;. | bless $|
|00005fc0| 73 65 6c 66 3b 0a 20 20 | 20 20 7d 20 23 20 65 6e |self;. | } # en|
|00005fd0| 64 20 73 75 62 20 6e 65 | 77 0a 0a 20 20 20 20 23 |d sub ne|w.. #|
|00005fe0| 20 42 69 6e 61 72 79 54 | 61 67 20 6f 62 6a 65 63 | BinaryT|ag objec|
|00005ff0| 74 73 20 73 69 6d 70 6c | 79 20 64 69 73 70 6c 61 |ts simpl|y displa|
|00006000| 79 20 74 68 65 69 72 20 | 6f 70 65 6e 69 6e 67 20 |y their |opening |
|00006010| 74 61 67 73 20 6f 6e 20 | 22 6f 70 65 6e 22 20 61 |tags on |"open" a|
|00006020| 6e 64 20 74 68 65 69 72 | 0a 20 20 20 20 23 20 63 |nd their|. # c|
|00006030| 6c 6f 73 69 6e 67 20 74 | 61 67 73 20 6f 6e 20 22 |losing t|ags on "|
|00006040| 63 6c 6f 73 65 22 2e 20 | 28 49 65 2e 20 22 3c 48 |close". |(Ie. "<H|
|00006050| 31 3e 22 20 6f 6e 20 6f | 70 65 6e 2c 20 61 6e 64 |1>" on o|pen, and|
|00006060| 20 22 3c 2f 48 31 3e 22 | 20 6f 6e 20 63 6c 6f 73 | "</H1>"| on clos|
|00006070| 65 2e 29 0a 20 20 20 20 | 23 20 41 20 6e 65 77 6c |e.). |# A newl|
|00006080| 69 6e 65 20 63 68 61 72 | 20 69 73 20 61 6c 73 6f |ine char| is also|
|00006090| 20 61 64 64 65 64 20 66 | 6f 72 20 72 65 61 64 61 | added f|or reada|
|000060a0| 62 69 6c 69 74 79 2c 20 | 73 6f 20 6c 6f 6e 67 20 |bility, |so long |
|000060b0| 61 73 20 77 65 20 61 72 | 65 6e 27 74 20 69 6e 0a |as we ar|en't in.|
|000060c0| 20 20 20 20 23 20 61 20 | 62 6c 6f 63 6b 20 6f 66 | # a |block of|
|000060d0| 20 70 72 65 66 6f 72 6d | 61 74 74 65 64 20 74 65 | preform|atted te|
|000060e0| 78 74 2e 0a 0a 20 20 20 | 20 73 75 62 20 64 69 73 |xt... | sub dis|
|000060f0| 70 6c 61 79 20 7b 0a 20 | 20 20 20 20 20 6d 79 20 |play {. | my |
|00006100| 24 73 65 6c 66 20 3d 20 | 73 68 69 66 74 3b 0a 20 |$self = |shift;. |
|00006110| 20 20 20 20 20 6d 79 20 | 24 6d 6f 64 65 20 3d 20 | my |$mode = |
|00006120| 73 68 69 66 74 3b 0a 20 | 20 20 20 20 20 69 66 20 |shift;. | if |
|00006130| 28 24 44 65 62 75 67 29 | 20 7b 24 73 65 6c 66 2d |($Debug)| {$self-|
|00006140| 3e 73 68 6f 77 6d 65 7d | 0a 20 20 20 20 20 20 69 |>showme}|. i|
|00006150| 66 20 28 24 6d 6f 64 65 | 20 65 71 20 22 6f 70 65 |f ($mode| eq "ope|
|00006160| 6e 22 29 20 7b 0a 20 20 | 20 20 20 20 20 20 70 72 |n") {. | pr|
|00006170| 69 6e 74 20 28 22 3c 24 | 73 65 6c 66 2d 3e 7b 27 |int ("<$|self->{'|
|00006180| 74 61 67 27 7d 22 29 3b | 0a 20 20 20 20 20 20 20 |tag'}");|. |
|00006190| 20 69 66 20 28 24 73 65 | 6c 66 2d 3e 7b 44 69 73 | if ($se|lf->{Dis|
|000061a0| 70 6c 61 79 65 64 5f 41 | 74 74 72 69 62 75 74 65 |played_A|ttribute|
|000061b0| 73 7d 29 20 7b 0a 20 20 | 20 20 20 20 20 20 20 20 |s}) {. | |
|000061c0| 24 73 65 6c 66 2d 3e 64 | 69 73 70 6c 61 79 5f 61 |$self->d|isplay_a|
|000061d0| 74 74 72 69 62 75 74 65 | 73 20 28 40 7b 24 73 65 |ttribute|s (@{$se|
|000061e0| 6c 66 2d 3e 7b 44 69 73 | 70 6c 61 79 65 64 5f 41 |lf->{Dis|played_A|
|000061f0| 74 74 72 69 62 75 74 65 | 73 7d 7d 29 3b 0a 20 20 |ttribute|s}});. |
|00006200| 20 20 20 20 20 20 7d 0a | 20 20 20 20 20 20 20 20 | }.| |
|00006210| 70 72 69 6e 74 20 28 22 | 3e 22 29 3b 0a 20 20 20 |print ("|>");. |
|00006220| 20 20 20 20 20 48 54 4d | 4c 3a 3a 42 61 73 65 3a | HTM|L::Base:|
|00006230| 3a 5f 63 6f 6e 64 69 74 | 69 6f 6e 61 6c 5f 6e 65 |:_condit|ional_ne|
|00006240| 77 6c 69 6e 65 20 28 24 | 73 65 6c 66 29 3b 0a 20 |wline ($|self);. |
|00006250| 20 20 20 20 20 7d 0a 20 | 20 20 20 20 20 65 6c 73 | }. | els|
|00006260| 69 66 20 28 24 6d 6f 64 | 65 20 65 71 20 22 63 6c |if ($mod|e eq "cl|
|00006270| 6f 73 65 22 29 20 7b 0a | 20 20 20 20 20 20 20 20 |ose") {.| |
|00006280| 70 72 69 6e 74 20 28 22 | 3c 5c 2f 24 73 65 6c 66 |print ("|<\/$self|
|00006290| 2d 3e 7b 27 74 61 67 27 | 7d 3e 22 29 3b 0a 20 20 |->{'tag'|}>");. |
|000062a0| 20 20 20 20 20 20 48 54 | 4d 4c 3a 3a 42 61 73 65 | HT|ML::Base|
|000062b0| 3a 3a 5f 63 6f 6e 64 69 | 74 69 6f 6e 61 6c 5f 6e |::_condi|tional_n|
|000062c0| 65 77 6c 69 6e 65 20 28 | 24 73 65 6c 66 29 3b 0a |ewline (|$self);.|
|000062d0| 20 20 20 20 20 20 7d 0a | 20 20 20 20 7d 20 23 20 | }.| } # |
|000062e0| 65 6e 64 20 73 75 62 20 | 64 69 73 70 6c 61 79 0a |end sub |display.|
|000062f0| 0a 20 20 7d 20 23 20 65 | 6e 64 20 70 61 63 6b 61 |. } # e|nd packa|
|00006300| 67 65 20 42 69 6e 61 72 | 79 54 61 67 0a 0a 23 23 |ge Binar|yTag..##|
|00006310| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00006320| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00006330| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00006340| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00006350| 23 23 23 23 23 23 23 23 | 23 23 23 23 0a 0a 20 20 |########|####.. |
|00006360| 23 20 48 54 4d 4c 3a 3a | 42 61 73 65 3a 3a 55 6e |# HTML::|Base::Un|
|00006370| 61 72 79 54 61 67 20 63 | 6c 61 73 73 2e 20 20 54 |aryTag c|lass. T|
|00006380| 68 69 73 20 63 6c 61 73 | 73 20 69 73 20 61 6c 73 |his clas|s is als|
|00006390| 6f 20 61 20 73 75 70 65 | 72 63 6c 61 73 73 20 66 |o a supe|rclass f|
|000063a0| 72 6f 6d 20 77 68 69 63 | 68 20 0a 20 20 23 20 64 |rom whic|h . # d|
|000063b0| 65 72 69 76 65 73 20 61 | 6c 6c 20 48 54 4d 4c 20 |erives a|ll HTML |
|000063c0| 6f 62 6a 65 63 74 73 20 | 77 68 6f 73 65 20 73 79 |objects |whose sy|
|000063d0| 6e 74 61 78 20 69 73 20 | 6a 75 73 74 20 3c 78 3e |ntax is |just <x>|
|000063e0| 20 6f 6e 20 6f 70 65 6e | 20 77 68 65 72 65 20 22 | on open| where "|
|000063f0| 78 22 20 3d 20 73 6f 6d | 65 20 0a 20 20 23 20 73 |x" = som|e . # s|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.